错误:从字符串加载报告转换为键入整数无效



有一个搜索按钮,可以使用年份在DatagridView上查看报告。因此,当数据库中有更多的项目对应于它年份(例如 2012 年)时......上面的异常是通过填充datgridview抛出的,当它尝试与Crystal报告连接时出现问题,它显示错误...请记住,只有当我的数据库中有更多的记录(正好超过 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

尝试注释所有这些行

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

然后一一取消评论。

我自己解决了这个问题,这里的问题是,如果数据库上有更多的数据,我的水晶报告将被加载很多次,因为我在formcall()方法中设置了水晶报告的数据源,当每行添加到表中时,此方法调用了100多次,所以同一个报告加载了很多次。我在新方法中声明了"setDatasource(ds.table(1))",只有在将所有行添加到数据源表中后,它才由click_button事件调用。感谢您的帮助

最新更新