【问题标题】:Crystal Reports: Passing Parameters via winform VB.NetCrystal Reports:通过 winform VB.Net 传递参数
【发布时间】:2017-10-17 14:27:02
【问题描述】:

我目前正在使用 Crystal 报表 XI 和 VB studio 2005。我在通过 winform 将参数传递给报表时遇到问题。以下是我的代码:

在我的水晶控件所在的报表中:

Public Sub DisplayReport(ByVal formTitle As String)
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.UserID = ""
myConnectionInfo.Password = ""

SetDBLogonForReport(myConnectionInfo, rptDoc) 

Me.Text = formTitle

CrystalReportViewer1.ReportSource = rptDoc 
CrystalReportViewer1.RefreshReport()
End Sub

Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
    Dim myTables As Tables = myReportDocument.Database.Tables
    For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
        Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
        myTableLogonInfo.ConnectionInfo = myConnectionInfo
        myTable.ApplyLogOnInfo(myTableLogonInfo)
    Next
End Sub

在我调用报告表的打印报告表中:

Private Sub ConfigureCrystalReport(ByVal btnPrint As Boolean)
    Dim myRptView As New frmReportView
    Dim rptFile As String = ""
    Dim strSelFormula As String = ""

    'getting report path dynamically
    Dim rptPath1 As New getAppDBSettingsBLL
    rptPath1 = New getAppDBSettingsBLL
    Dim rptPath As String = rptPath1.getReportPath(4)
    rptFile = rptPath & "\" & "XXX.rpt" 

    myRptView = New frmReportView
    rptDoc.Load(rptFile)


    myRptView.DisplayReport(Me.Text)

    rptDoc.SetParameterValue("@dateA", Format(Me.DateTimePicker1.Value.Date, "mm/dd/yyyy"))

    myRptView.Show()

    myRptView.CrystalReportViewer1.Dock = DockStyle.Fill
    myRptView.WindowState = FormWindowState.Maximized

End Sub

我正在根据参数从连接 SQL 语句中提取数据,以在报告中使用。 SQL 语句正确,传递的值正确。但是参数提示框不断出现,我想抑制它。在提示框中输入参数后,报表正确显示。这里有什么问题?

【问题讨论】:

    标签: vb.net winforms crystal-reports


    【解决方案1】:

    这种类型的参数"@dateA"是给Stored Procedure

    而这种类型的参数"dateA" 用于来自Crystal Parameter 本身的正常调用

    【讨论】:

      【解决方案2】:

      首先,如果您要创建 CR 参数,则该参数应以“?”开头,而不是“@”。

      其次,对于不断弹出的参数框,您可以做的是在水晶报表查看器表单的页面加载上,粘贴以下内容:

      Dim param1Fields As New ParameterFields
      Dim param1Field As New ParameterField
      Dim param1Range As New ParameterDiscreteValue
      
      param1Field.ParameterFieldName = "Write your parameter name"
      param1Range.Value = <provide your parameter value>
      param1Field.CurrentValues.Add(param1Range)
      param1Fields.Add(param1Field)
      CrystalReportViewer1.ParameterFieldInfo = param1Fields
      

      【讨论】:

        猜你喜欢
        • 2013-11-19
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多