将多个值传递给VB.net中的单个Crystal Reports参数

时间:2013-05-17 18:58:27

标签: vb.net visual-studio-2012 crystal-reports parameter-passing

我在Visual Studio 2012中使用Visual Basic和Crystal Reports for Visual Studio。

我在Crystal Report中有一个可以接受多个值的参数(例如:Regions)。如何从vb.net将多个值传递给该单个参数?值将来自ListBox中的选择。

很抱歉,如果在其他地方得到解答。我在互联网上尝试过很多没有运气的搜索。

提前致谢!

鲍勃

根据要求,这里是我从ComboBox中选择单个值的代码。 Crystal报表中的参数是BuyDate。我只是不确定如何为多个值制作它。如果您需要更多详细信息,请告诉我。

Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue

Dim SSBuy = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
Dim Filepath = "\\filepath\Report By Buy Date.rpt"

SSBuy.Load(Filepath)

crParameterDiscreteValue.Value = ComboBox1.SelectedItem
crParameterFieldDefinitions = SSBuy.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("BuyDate")
crParameterValues = crParameterFieldDefinition.CurrentValues

crParameterValues.Clear()
crParameterValues.Add(crParameterDiscreteValue)

crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
SSBuyForm.CrystalReportViewer1.ReportSource = SSBuy

SSBuyForm.Refresh()
SSBuyForm.Show()

1 个答案:

答案 0 :(得分:2)

我能够在SAP网站上找到答案。以下是该文章的链接,供其他可能需要它的人使用。

Pass Multiple Values to a Parameter

此外,这是我使用的实际代码,它根据从ListBox中选择的PO#运行报告。

Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue

Dim SSPO = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
Dim Filepath = "\\Filepath\Report Download By PO #.rpt"

SSPO.Load(Filepath)

crParameterFieldDefinitions = SSPO.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions("PO#")
crParameterValues = crParameterFieldDefinition.CurrentValues

Dim Count As Integer = POList1.SelectedItems.Count

For i = 0 To Count - 1
     If i > 0 Then
          crParameterDiscreteValue = Nothing
     End If
     crParameterDiscreteValue = New ParameterDiscreteValue()
     crParameterDiscreteValue.Value = POList1.SelectedItems(i)
     crParameterValues.Add(crParameterDiscreteValue)
Next

crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
SSPoForm.CrystalReportViewer1.ReportSource = SSPO

SSPoForm.Refresh()
SSPoForm.Show()