【问题标题】:CrystalReports DataTable Error VB.NETCrystalReports 数据表错误 VB.NET
【发布时间】:2012-05-13 06:20:17
【问题描述】:

我正在尝试将数据库中的所有数据传递给报告:但出现错误(报告没有表格)

Dim sqlConn As String = "SELECT (SUM(item_selldetail * item_quantity )/ 100 * 12) AS isv_report," & _
                    " (SUM( item_selldetail * item_quantity ) - (SUM(item_selldetail * item_quantity )/ 100 * 12)) " & _
                    " AS capital_report,SUM( item_selldetail * item_quantity ) AS total_report  FROM qa_items;"
                Dim objDataAdapter As New MySqlDataAdapter(sqlConn, objConn)

                ' DataSet
                Dim ds As New DataSet

                ' llenar el DataSet
                objDataAdapter.Fill(ds)


                Dim mireporte As New ReportDocument()

                mireporte.Load("C:\Users\Jonathan\Desktop\Proyectos\Quickadmon\Quickadmon\Reportes\report_capital_rpt.rpt")

                mireporte.SetDataSource(ds)

                Me.capitalreport_viewer_capital_report.ReportSource = mireporte

有人知道我能做什么吗?

【问题讨论】:

  • 需要更多详细信息,示例输出,错误是什么。顺便说一句,您的变量名 sqlConn 非常具有误导性。对我来说 sqlConn 意味着 sql 连接,而实际上 sqlConn 在你的情况下是一个可能是 SQLCommand 调用的 sql 字符串。
  • 完成此操作后,我创建了一个与 DataTable/DataReader 对象结合使用的 XML 文件,并将 ADO.NET 连接指向 Crystal 中的该对象(它将允许您布置报告中的字段)。然后从您的 .Net 程序中,您可以传入该 DataTable。对我来说,您似乎正在返回该 DataSet 中的一个记录集。给我几个,我会打出更详细的答案。
  • 感谢您的评论,我需要以编程方式执行此操作,而不使用向导,占用了一个基本示例,说明如何从表中选择一些字段并将其显示在报表查看器中。我在编程上有点困惑。我还避免使用绝对路径指向文件 xml 或 rpt。

标签: windows vb.net crystal-reports datatable dataset


【解决方案1】:

示例代码在这里,尝试这样做

    sql = "SELECT Product_id,Product_name,Product_price FROM Product"
    Dim dscmd As New SqlDataAdapter(sql, cnn)
    Dim ds As New DataSet1
    dscmd.Fill(ds, "Product")
    cnn.Close()

    Dim objRpt As New CrystalReport1
    objRpt.SetDataSource(ds.Tables(1))
    CrystalReportViewer1.ReportSource = objRpt
    CrystalReportViewer1.Refresh()

如果您需要完整的源代码:

http://vb.net-informations.com/crystal-report/crystal_report_from_sql_query_string.htm

市场。

【讨论】:

    【解决方案2】:

    这是我过去所做的。

    1.) 在 Crystal 中创建 ADO.NET (XML) 连接。为此,您需要提供 XML 文件的路径,XML 文件将包含 DataTable(或 DataReader 的)模式。它看起来像这样(x0020 表示字段中的一个空格,如果有的话,请参阅http://www.blakepell.com/Blog/?p=14 了解更多详细信息):

      <?xml version="1.0" encoding="utf-8" ?>
      <people>
          <first_x0020_name>
          <last_x0020_name>
          <phone>
      </people>
    

    2.) 像你一样设置你的数据源,在我的包装器代码中我有这样的东西,我是从包装器的属性中设置它的:

        If _dataReader IsNot Nothing Then
            report.SetDataSource(_dataReader)
        End If
    
        If _dataTable IsNot Nothing Then
            report.SetDataSource(_dataTable)
        End If
    

    3.) 将它放在您的查看器控件中(或导出它,这通常是我所做的,因为我正在从中生成 PDF 输出)。

        report.Export()
    

    如果这对您不起作用,请发布您在执行此操作时收到的特定堆栈跟踪和异常,以便我们更好地对其进行故障排除。 ;)

    【讨论】:

    • 有什么方法可以在不使用绝对路径的情况下导入 XML 文件并以编程方式执行而不需要报告向导?谢谢
    • XML 文件是您将创建的文件,它与您的报告位于同一目录中(我必须手动创建我的文件)。它基本上是一个模式,它告诉 Crystal 您将有哪些可用字段,以便您可以在报表中布置它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多