1

次のように書き留めた Crystal レポートのデータセットを埋めるコードがあります。

    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という1つのテーブルに保存し、SQLサーバーから同じものをロードすることです。これが私のコードです。

    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

エラーは発生していませんが、Crystal レポートに値がフェッチされません。

Crystal レポートにデータを取得するための私のコードを以下に示します。

            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