1

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

我在水晶报表中有一个可以接受多个值的参数(例如:区域)。如何从 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()
4

1 回答 1

3

我能够在 SAP 网站上找到答案。这是文章的链接,供任何可能需要它的人使用。

将多个值传递给参数

此外,这是我使用的实际代码,它根据从 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()
于 2013-05-20T20:02:24.670 回答