1

我有一个代码可以填充我的水晶报告的数据集,写下来如下:

    Dim str1 As String = "SELECT * FROM farm_loan WHERE id = '" & txtAgreement.Text & "'"
    Dim str2 As String = "SELECT * FROM cd_farmers WHERE Customer_ID = '" & txtCustID.Text & "'"
    Dim str3 As String = "SELECT * FROM cd_Address WHERE Customer_ID = '" & txtCustID.Text & "'"
    Dim str4 As String = "SELECT * FROM cd_loan_charges WHERE loanid = '" & txtAgreement.Text & "'"


    Dim ad1 As SqlDataAdapter = New SqlDataAdapter(str1, Conn)
    Dim ad2 As SqlDataAdapter = New SqlDataAdapter(str2, Conn)
    Dim ad3 As SqlDataAdapter = New SqlDataAdapter(str3, Conn)
    Dim ad4 As SqlDataAdapter = New SqlDataAdapter(str4, Conn)


    Dim LDPSDataSet As DataSet = New DataSet()

    ad1.Fill(LDPSDataSet, "farm_loan")
    ad2.Fill(LDPSDataSet, "cd_farmers")
    ad3.Fill(LDPSDataSet, "cd_Address")
    ad4.Fill(LDPSDataSet, "cd_loan_charges")

上面的代码工作正常。我想要做的是将 sql 语句存储在一个名为 tblDataSet 的表中,并从 sql server 加载相同的表。这是我的代码。

    cmd = New SqlCommand("SELECT * FROM tblDataSet WHERE Flag = 'Y'", Conn)
    Dim reader As SqlDataReader = cmd.ExecuteReader()
      Dim ad As SqlDataAdapter

    If reader.HasRows Then

        Do While reader.Read()

            MySql = reader(1).ToString
            Dim table As String = reader(2).ToString

            Dim comm As SqlCommand = New SqlCommand(MySql)
            comm.Connection = Conn
            comm.CommandType = CommandType.Text
            comm.Parameters.Add("@AgreementID", SqlDbType.Int).Value=txtAgreement.Text
            comm.Parameters.Add("@CustomerID", SqlDbType.Int).Value = txtCustID.Text

            Dim ad As SqlDataAdapter = New SqlDataAdapter

            For Each tbl As DataTable In LDPSDataSet.Tables()
                If tbl.TableName = table Then
                    ad.SelectCommand = comm
                End If
                Exit For
                ad.Update(tbl)
            Next
        Loop
    End If

我没有遇到任何错误,但水晶报告中没有任何值。

我将数据获取到水晶报表的代码如下所示。

            With mReport
                repOptions = .PrintOptions
                With repOptions
                    .PaperOrientation = rptOrientation
                    .PaperSize = rptSize
                    .PrinterName = printer
                End With

                .Load(rptPath, OpenReportMethod.OpenReportByDefault)
                .SetDataSource(LDPSDataSet)
                '.Refresh()
                .PrintToPrinter(1, True, 0, 0)
            End With

请帮助我确定我的代码的问题。

提前致谢。

4

0 回答 0