0

年を使用して datagridview に関するレポートを表示するための検索ボタンが 1 つあります。そのため、データベース内に年 (2012 など) に対応する項目がさらにある場合、datgridview を埋めることによって上記の例外がスローされ、試行時に問題が発生します。 Crystal Report に接続すると、エラーが表示されます...この問題に直面するのは、データベースにもっと多くのレコードがある場合 (正確には 100 行以上) だけであることを思い出してください...データベースからいくつかの行を削除すると、正常に動作します。 .テーブルを作成し、そのテーブルをデータセットに追加し、そのテーブル1をクリスタルレポートのデータソースとして割り当てました

Public Class crystalform1

Dim r As DataRow
Dim t As DataTable
Dim ds1 As New DataSet1()
Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.



    t = ds1.Tables.Add("DataTable1")


    t.Columns.Add("invoiceno", Type.GetType("System.Int32"))
    t.Columns.Add("customer_name", Type.GetType("System.String"))
    t.Columns.Add("customer_phonenumber", Type.GetType("System.Int32"))
    t.Columns.Add("date", Type.GetType("System.String"))
    t.Columns.Add("product_item", Type.GetType("System.String"))
    t.Columns.Add("bookno", Type.GetType("System.Int32"))
    t.Columns.Add("serialno", Type.GetType("System.Int32"))
    t.Columns.Add("price", Type.GetType("System.Single"))
    t.Columns.Add("quantity", Type.GetType("System.Int32"))

    t.Columns.Add("discount", Type.GetType("System.Int32"))

    t.Columns.Add("paymentby", Type.GetType("System.String"))
    t.Columns.Add("checkno", Type.GetType("System.Int32"))
    t.Columns.Add("checkdate", Type.GetType(" System.String"))
    t.Columns.Add("total", Type.GetType("System.Single"))
    t.Columns.Add("totalamount", Type.GetType("System.Single"))
End Sub
 Sub formcall(ByVal invoiceno As Integer, ByVal date1 As Date, ByVal customername As String, ByVal customerphone As Integer, ByVal product As String, ByVal bookno As Integer, ByVal serialno As Integer, ByVal price As Single, ByVal quantity As Integer, ByVal discount As Integer, ByVal payment As String, ByVal checkno As Integer, ByVal checkdate As String, ByVal total As Single, ByVal totalamount As Single)
    ' This call is required by the designer.
    If IsDate(checkdate) Then
        CType(checkdate, Date).ToShortDateString()
    End If


    r = t.NewRow()
    r("invoiceno") = invoiceno
    r("customer_Name") = customername
    r("customer_Phonenumber") = customerphone
    r("date") = date1.ToShortDateString
    r("product_item") = product
    r("bookNo") = bookno
    r("serialNo") = serialno
    r("price") = price
    r("quantity") = quantity
    r("discount") = discount
    r("paymentby") = payment
    r("checkno") = checkno
    r("checkdate") = checkdate
    r("total") = total
    r("totalamount") = totalamount

    t.Rows.Add(r)
    Dim objRpt As New CrystalReport2


 Try
            objRpt.SetDataSource(ds1.Tables(1))
            CrystalReportViewer1.ReportSource = objRpt /*exception is showing here*/
        Catch ex As Exception
            MsgBox("Report Error", ex.Message())
        End Try



End Sub
4

2 に答える 2

1

このすべての行にコメントしてみてください

r("invoiceno") = invoiceno
r("customer_Name") = customername
r("customer_Phonenumber") = customerphone
r("date") = date1.ToShortDateString
r("product_item") = product
r("bookNo") = bookno
r("serialNo") = serialno
r("price") = price
r("quantity") = quantity
r("discount") = discount
r("paymentby") = payment
r("checkno") = checkno
r("checkdate") = checkdate
r("total") = total
r("totalamount") = totalamount

そして、1つずつコメントを外します。

于 2012-04-17T14:56:01.560 に答える
1

私は自分でこの問題を解決しました。ここでの問題は、データベースにさらにデータがある場合、フォームコール()メソッド内にクリスタルレポートのデータソースを設定しているため、クリスタルレポートが何度も読み込まれることでした。各行がテーブルに追加されるたびに 100 回、この同じレポートが何度も読み込まれます。新しいメソッドで「setDatasource(ds.table(1))」を宣言しました。データソーステーブル..ご協力ありがとうございます

于 2012-04-18T15:22:38.070 に答える