【问题标题】:Crystal Report dynamic datasource not creating reportCrystal Report 动态数据源未创建报表
【发布时间】:2020-07-08 14:24:45
【问题描述】:

我已经在 Google 上搜索过这个主题,并且按照我所看到的进行了编码,但是 CrystalReportViewer 是空的,我没有收到任何错误。我不确定我做错了什么。以下是我所有的代码。

strSQL = "select * from MMM_vw_Rpt_Summary where BudgetID = " & Master.lblBudgetIDText
ds = CreateDataset(strSQL, "cnn_rcg_mmm", "dt_Summary")
CreateSummary(ds)

Public Shared Function CreateDataset(ByVal strSQL As String, ByVal strCNN As String, ByVal strTable As String) As DataSet
    Dim strConnString As String = ConfigurationManager.ConnectionStrings(strCNN).ConnectionString
    Dim da As MySqlDataAdapter
    Dim ds As DataSet
    Dim strReturn As String
    strReturn = ""

    Try
        Using con As New MySqlConnection(strConnString)
            Dim cmd As New MySqlCommand(strSQL, con)
            con.Open()
            da = New MySqlDataAdapter(cmd)
            ds = New dsLifeBudget

            da.Fill(ds, strTable)

            Return ds
            con.Close()
        End Using
    Catch ex As Exception
        strReturn = ex.Message
    End Try
End Function

Protected Sub CreateSummary(ByVal ds As DataSet)
    Dim strReportPath As String = Server.MapPath("~/Reports/LB_Summary.rpt")
    Dim cr As New ReportDocument
    Dim strError As String = ""

    Master.HideMsg()

    'Verify the path to the Crystal Report's .RPT file
    If Not IO.File.Exists(strReportPath) Then
        Throw (New Exception("Unable to locate report file:" & vbCrLf & strReportPath))
        strError = "Unable to locate report file:  " & strReportPath
        Master.txtMsgText = "Error creating Summary - " & strError
        Master.txtMsgVisible(True)
        Exit Sub
    End If

    crLifeBudget.HasDrillUpButton = False
    crLifeBudget.Height = "300px"
    crLifeBudget.Width = "500px"

    'Load the Crystal report's .RPT file and pass in the DataTable
    cr.Load(strReportPath)
    cr.SetDataSource(ds.Tables("dt_Summary"))
    crLifeBudget.ReportSource = cr
    crLifeBudget.RefreshReport()

End Sub

任何帮助将不胜感激! 埃迪·雷

【问题讨论】:

  • 您确认您的数据集包含数据了吗?
  • 是的。数据库确实有数据。

标签: asp.net vb.net crystal-reports


【解决方案1】:

尝试参考以下,它可以解决问题,因为您的代码缺少crLifeBudget.refresh() 行。

Crystal Reports empty when printed during runtime

【讨论】:

  • crLifeBudget 只有 RefreshReport 命令。我在加载数据集后添加了 cr.refresh,但仍然没有显示任何报告
  • 只是为了澄清。你是如何设计报告的?您是否通过将表格字段拖到报告中来制作报告?你是如何在设计时建立联系的?你的项目中是否有类似下面的线? crLifeBudget.SetDatabaseLogon("user, dbPwd)。如果您没有在设计视图中设计报表,则意味着它是一个空白页面。在这种情况下,您必须通过将相关字段拖到报表来设计报表,否则您将拥有编写代码以在运行时显示记录。看起来您还没有通过设计视图或编程方式设计报告
  • 没有看到整个项目,不能说出确切的问题。但是,看起来您正在加载一个空白报表,或者您在运行时创建的数据集未链接到报表。通常,报告会从其原始连接中获取数据。如果原始报告没有连接,那么它肯定是一个空白报告。如果你能把报告设计的截图贴出来,我们会更容易理解。
  • 我先创建了 XSD,然后使用 XSD 创建了 Crystal Report。我通过创建数据集将数据添加到 XSD 中,然后加载到报告中
  • 这里是创建 strSQL = "select * from MMM_vw_Rpt_Summary where BudgetID = " & Master.lblBudgetIDText ds = CreateDataset(strSQL, "cnn_rcg_mmm", "dt_Summary") If ds.Tables("dt_Summary") .Rows.Count > 0 Then CreateSummary(ds) Else Master.HideMsg() Master.txtMsgText = "No records found For budget" & lblBudgetName.Text Master.txtMsgVisible(True) Exit Sub End If
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多