将多个值传递给来自 VB.net 的单个 Crystal Reports 参数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16616107/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Passing Multiple Values to a single Crystal Reports parameter from VB.net
提问by Bob Allande
I am using Visual Basic in Visual Studio 2012 with Crystal Reports for Visual Studio.
我在 Visual Studio 2012 中使用 Visual Basic 和用于 Visual Studio 的 Crystal Reports。
I have a parameter in a Crystal Report that can accept multiple values (for instance: Regions). How do I pass multiple values to that single parameter from vb.net? The values would be coming from selections from a ListBox.
我在 Crystal Report 中有一个可以接受多个值的参数(例如:Regions)。如何从 vb.net 向单个参数传递多个值?这些值将来自 ListBox 的选择。
Sorry if this is answered elsewhere. I have tried many searches all over internet with no luck.
抱歉,如果在其他地方回答了这个问题。我在互联网上尝试了很多搜索,但都没有运气。
Thanks in advance!
提前致谢!
Bob
鲍勃
As asked for, here is code from where I select a single value from ComboBox. The Parameter in the Crystal Report is BuyDate. I just am not sure how to make it for multiple values. If you need more details, just let me know.
根据要求,这里是我从 ComboBox 中选择单个值的代码。Crystal Report 中的参数是 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()
回答by Bob Allande
I was able to find the answer on the SAP website. Here is the link to the article, for anyone else who may need it.
我能够在 SAP 网站上找到答案。这是文章的链接,供其他可能需要的人使用。
Pass Multiple Values to a Parameter
Also, here is the actual code I used, which runs a report based on PO#'s selected from a ListBox.
此外,这是我使用的实际代码,它根据从 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()

