错误:从字符串加载报告转换失败到类型整数无效

时间:2012-04-17 12:27:22

标签: vb.net crystal-reports

有一个搜索按钮可以查看datagridview上的报告使用year..so当数据库中有更多项目对应它年份(比如2012)...填充datgridview抛出上述异常,问题发生当它试图连接水晶报告时,它显示错误...请记住,只有当我的数据库中有更多记录(正好超过100行)时才会遇到此问题...当我从数据库中删除几行时,它工作正常。我创建了一个表并将该表添加到数据集,然后将该table1指定为水晶报表的数据源

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

我自己解决了这个问题,问题是,如果有关于数据库的更多数据,我的水晶报告会多次加载,因为我在formcall()方法中设置了水晶报表的数据源,这个方法是当每一行添加到表时调用超过100次,所以这个相同的报告多次加载。我在new方法中声明了“setDatasource(ds.table(1))”,只有在添加了all之后才会被click_button事件调用进入数据源表...感谢您的所有帮助