Question : After filling datatabe, how do you read the table to display the result

Hi,

I have created a datatable, and filled it, as seen in the code below.  I am now trying to display the results of the datatable, but i think I am doing someting wrong.  Can anyone tell me where I am going wrong here?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
Private Sub btnCreateStatement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateStatement.Click

        Dim myConn As New MySqlConnection
        Dim myComm As New MySqlCommand

        Dim strSQL As String
        Dim sEndDate As String
        Dim CustomerRef As String
        Dim current As Double
        Dim thirty As Double
        Dim sixty As Double
        Dim ninety As Double
        Dim onetwenty As Double
        Dim amount As Double

        Dim nBFBal As Double
        Dim nCFBal As Double

        CustomerRef = CustomerRefComboBox.Text
        sEndDate = Format(DateTimePicker2.Value, "yyyy-mm-dd")

        strSQL = " SELECT tr.TransID, tr.Date, trt.Category, trt.Descr, cz.CustomerRef, tr.Amount, SUM( tr.Amount ) AS TotalGroup, tr.Notes, " & _
                   "PERIOD_DIFF(CONCAT(YEAR(" & sEndDate & "),IF(MONTH(" & sEndDate & ")<10,'0',''),MONTH(" & sEndDate & ")),CONCAT(YEAR(tr.Date),IF(MONTH(tr.Date)<10,'0',''),MONTH(tr.Date))) AS Days, " & _
                   "IFNULL( (Select SUM(AllocationAmount)FROM Transactions T1 LEFT JOIN TransactionAllocations TA ON TA.TransactionID = T1.TransID " & _
                   "LEFT JOIN Transactions T2 ON T2.TransID = TA.TransactionID_Allocation WHERE(tr.TransID = T1.TransID) AND T2.CustomerID = '14' ) * -1, 0) AS TotalAgainstCustomer, " & _
                   "IFNULL( (Select SUM(AllocationAmount)FROM Transactions T1 LEFT JOIN TransactionAllocations TA ON TA.TransactionID_Allocation = T1.TransID " & _
                   "WHERE tr.TransID = T1.TransID) * -1, 0) AS PaidAmount " & _
                   "FROM Customers cz, Transactions tr, TransTypes trt " & _
                   "WHERE (tr.CustomerID = cz.CustomerID AND cz.CustomerRef = '" & CustomerRef & "' AND tr.TransTypeID = trt.TransTypeID) " & _
                   "AND (tr.Date<=" & sEndDate & ") " & _
                   "AND NOT tr.TransTypeID IN ('RESOLVE DEBIT', 'RESOLVE CREDIT') " & _
                   "GROUP BY IFNULL( LinkTo, TransID ) " & _
                   "HAVING TotalGroup <>0 " & _
                   "ORDER BY tr.Date, tr.TransID LIMIT 0, 30"

        myConn = GetConnection()     

        Try
            myConn.Open()
            Try
                Dim myDataAdapter As New MySqlDataAdapter(strSQL,myConn)
                Dim myData As New DataTable
                '   myComm.Connection = myConn
                '   myComm.CommandText = strSQL

                myDataAdapter.SelectCommand = myComm
                myDataAdapter.Fill(myData)

                For Each myData In Oztech_testDataSet.Tables
                    Dim myRow As DataRow
                    For Each myRow In myData.Rows
                        Dim myCol As DataColumn
                        For Each myCol In myData.Columns

                            nBFBal = 0
                            If myRow("Date").ToString() >= DateTimePicker1.Value Then
                                If myRow("TotalAgainstCustomer").ToString() <> 0 Then
                                    nBFBal = nBFBal + myRow("Amount").ToString()
                                Else
                                    nBFBal = nBFBal + myRow("Amount").ToString()
                                    amount = myRow("Amount").ToString() + myRow("PaidAmont").ToString()
                                End If
                                If myRow("Days").ToString() <= 0 Then
                                    current = current + amount
                                ElseIf myRow("Days").ToString() = 1 Then
                                    thirty = thirty + amount
                                ElseIf myRow("Days").ToString = 2 Then
                                    sixty = sixty + amount
                                ElseIf myRow("Days").ToString() = 3 Then
                                    ninety = ninety + amount
                                ElseIf myRow("Days").ToString() = 4 Then
                                    onetwenty = onetwenty = amount
                                End If
                            End If
                        Next
                        nCFBal = nBFBal

                    Next

                Next

            Catch myError As MySqlException
                MessageBox.Show("There was an error reading from the database: " & myError.Message)
            End Try

        Catch myError As MySqlException
            MessageBox.Show("Error connecting to the database: " & myError.Message)
        Finally
            If myConn.State <> ConnectionState.Closed Then
                myConn.Close()
            End If
        End Try

    End Sub

End Class

Answer : After filling datatabe, how do you read the table to display the result

first of all you need to debug the code.
put a breakpoint on this line For Each myData In Oztech_testDataSet.Tables
then select myData and take QuickWatch.
then try to gets it data. if it has data then press F10 and to to next line
then try it line by line.


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
Private Sub btnCreateStatement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateStatement.Click

        Dim myConn As New MySqlConnection
        Dim myComm As New MySqlCommand

        Dim strSQL As String
        Dim sEndDate As String
        Dim CustomerRef As String
        Dim current As Double
        Dim thirty As Double
        Dim sixty As Double
        Dim ninety As Double
        Dim onetwenty As Double
        Dim amount As Double

        Dim nBFBal As Double
        Dim nCFBal As Double

        CustomerRef = CustomerRefComboBox.Text
        sEndDate = Format(DateTimePicker2.Value, "yyyy-mm-dd")

        strSQL = " SELECT tr.TransID, tr.Date, trt.Category, trt.Descr, cz.CustomerRef, tr.Amount, SUM( tr.Amount ) AS TotalGroup, tr.Notes, " & _
                   "PERIOD_DIFF(CONCAT(YEAR(" & sEndDate & "),IF(MONTH(" & sEndDate & ")<10,'0',''),MONTH(" & sEndDate & ")),CONCAT(YEAR(tr.Date),IF(MONTH(tr.Date)<10,'0',''),MONTH(tr.Date))) AS Days, " & _
                   "IFNULL( (Select SUM(AllocationAmount)FROM Transactions T1 LEFT JOIN TransactionAllocations TA ON TA.TransactionID = T1.TransID " & _
                   "LEFT JOIN Transactions T2 ON T2.TransID = TA.TransactionID_Allocation WHERE(tr.TransID = T1.TransID) AND T2.CustomerID = '14' ) * -1, 0) AS TotalAgainstCustomer, " & _
                   "IFNULL( (Select SUM(AllocationAmount)FROM Transactions T1 LEFT JOIN TransactionAllocations TA ON TA.TransactionID_Allocation = T1.TransID " & _
                   "WHERE tr.TransID = T1.TransID) * -1, 0) AS PaidAmount " & _
                   "FROM Customers cz, Transactions tr, TransTypes trt " & _
                   "WHERE (tr.CustomerID = cz.CustomerID AND cz.CustomerRef = '" & CustomerRef & "' AND tr.TransTypeID = trt.TransTypeID) " & _
                   "AND (tr.Date<=" & sEndDate & ") " & _
                   "AND NOT tr.TransTypeID IN ('RESOLVE DEBIT', 'RESOLVE CREDIT') " & _
                   "GROUP BY IFNULL( LinkTo, TransID ) " & _
                   "HAVING TotalGroup <>0 " & _
                   "ORDER BY tr.Date, tr.TransID LIMIT 0, 30"

        myConn = GetConnection()     

        Try
            myConn.Open()
            Try
                Dim myDataAdapter As New MySqlDataAdapter(strSQL,myConn)
                Dim myData As New DataTable
                '   myComm.Connection = myConn
                '   myComm.CommandText = strSQL

                myDataAdapter.SelectCommand = myComm
                myDataAdapter.Fill(myData)

                For Each myData In Oztech_testDataSet.Tables
                    Dim myRow As DataRow
                    For Each myRow In myData.Rows
                        Dim myCol As DataColumn
                        For Each myCol In myData.Columns

                            nBFBal = 0
                            If myRow("Date").ToString() >= DateTimePicker1.Value Then
                                If myRow("TotalAgainstCustomer").ToString() <> 0 Then
                                    nBFBal = nBFBal + myRow("Amount").ToString()
                                Else
                                    nBFBal = nBFBal + myRow("Amount").ToString()
                                    amount = myRow("Amount").ToString() + myRow("PaidAmont").ToString()
                                End If
                                If myRow("Days").ToString() <= 0 Then
                                    current = current + amount
                                ElseIf myRow("Days").ToString() = 1 Then
                                    thirty = thirty + amount
                                ElseIf myRow("Days").ToString = 2 Then
                                    sixty = sixty + amount
                                ElseIf myRow("Days").ToString() = 3 Then
                                    ninety = ninety + amount
                                ElseIf myRow("Days").ToString() = 4 Then
                                    onetwenty = onetwenty = amount
                                End If
                            End If
                        Next
                        nCFBal = nBFBal

                    Next

                Next

            Catch myError As MySqlException
                MessageBox.Show("There was an error reading from the database: " & myError.Message)
            End Try

        Catch myError As MySqlException
            MessageBox.Show("Error connecting to the database: " & myError.Message)
        Finally
            If myConn.State <> ConnectionState.Closed Then
                myConn.Close()
            End If
        End Try

    End Sub

End Class
Random Solutions  
 
programming4us programming4us