2017-04-06 86 views
0

我目前使用水晶報表XI和VB studio 2005.我正面臨着通過winform將參數傳遞給報表的問題。下面是我的代碼:Crystal Reports:通過winform傳遞參數VB.Net

在我的報告形式,其中晶體控制所在:

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語句是正確的,並且傳遞的值是正確的。但參數提示框不斷出現,我想壓制它。在提示框中輸入參數時,報告顯示正確。這裏有什麼問題?

回答

0

這種類型的參數"@dateA"的是Stored Procedure

和這種類型的參數"dateA"的是從Crystal Parameter正常自稱

0

首先,如果你正在做一個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