2016-07-23 13 views
-1

のDataGridViewします読み出しデータはIは、MySQLからデータを読み込み、以下のようなコードでのDataGridViewに表示しようとしています

Dim totalManagerQuantity As Integer 
Dim totalStaffQuantity As Integer 
Dim totalProductionQuantity As Integer 
Dim totalSalesManager As Double 
Dim totalSalesStaff As Double 
Dim totalSalesProduction As Double 
     sqL = "SELECT TDate, InvoiceNo, 
        (
        SELECT TD.Quantity 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 1 
       ) as ManagerQuantity, 
        ( 
        SELECT TD.ItemPrice 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 1 
       ) as ManagerPrice, 
        (
        SELECT TD.Quantity 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 2 
       ) as StaffQuantity, 
        ( 
        SELECT TD.ItemPrice 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 2 
       ) as StaffPrice, 
        ( 
        SELECT TD.Quantity 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 3 
       ) as ProductionQuantity, 
        ( 
        SELECT TD.ItemPrice 
        FROM TransactionDetails as TD 
        WHERE TD.InvoiceNo = T.InvoiceNo 
        AND TD.ProductNo = 3 
       ) as ProductionPrice 
      FROM Transactions as T 
      WHERE TDate BETWEEN '" & frmFilterReportInvoice.dtpStartDate.Value.ToString("MM/dd/yyyy") & "' 
      AND '" & frmFilterReportInvoice.dtpEndDate.Value.ToString("MM/dd/yyyy") & "' 
      AND StaffID = '" & lblTempStaffID.Text & "'" 
     ConnDB() 
     cmd = New MySqlCommand(sqL, conn) 
     dr = cmd.ExecuteReader 

     dgvReportInvoice.Rows.Clear() 
     dgvTotalQuantity.Rows.Clear() 
     totalManagerQuantity = 0 
     totalStaffQuantity = 0 
     totalProductionQuantity = 0 
     totalSalesManager = 0 
     totalSalesStaff = 0 
     totalSalesProduction = 0 

     Do While dr.Read = True 

      dgvReportInvoice.Rows.Add(dr("TDate"), dr("InvoiceNo"), dr("ManagerQuantity"), dr("StaffQuantity"), dr("ProductionQuantity")) 

      'Compute total manager, staff and production to Display 
      totalManagerQuantity += dr("ManagerQuantity") 
      totalStaffQuantity += dr("StaffQuantity") 
      totalProductionQuantity += dr("ProductionQuantity") 

      'Calculate the total amount per products 
      totalSalesManager += (dr("ManagerPrice") * dr("ManagerQuantity")) 
      totalSalesStaff += (dr("StaffPrice") * dr("StaffQuantity")) 
      totalSalesProduction += (dr("ProductionPrice") * dr("ProductionQuantity")) 

     Loop 

しかし、私のコードは、エラーがある場合につきなどのプロセス計算量(+ =)以下では、私の問題を解決する方法と、正しいコードとは何ですか、おかげです。

P.S.私のテーブルにデータがない場合、エラーが発生します。 http://imgur.com/a/2BIAd

よろしく、

+0

「回答」やタイトルに「解決しよう」を入れないでください。ここで、適切なことは、あなたの問題を解決した答えの横にあるチェックマークをクリックすることです。詳細については、[ツアー]をご覧ください。[質問] - エラーメッセージの画像へのリンクがうまく受信されていません。 SQLパラメータも使用する必要があります。これにより、コードが簡単になります。 – Plutonix

答えて

0

あなたは合計する前に、自分の価値観を確認するヌル必要があります。

If not IsDBNull(dr("ManagerQuantity")) Then 
    totalManagerQuantity += dr("ManagerQuantity") 
End If 
+0

こんにちは@Andrew、あなたの助けに感謝して、それは今の仕事です、素晴らしい一日を... – dhewa

関連する問題