这怎么可能 ... [英] How is it possible ...
问题描述
.......没人知道答案。
我无法想象我是唯一一个在CR中使用参数的人。
所以,我的问题再次出现:
我有以下问题。
(VB.NET 2003 with CR)
我有一个带有多值离散值和范围值的报告。
报告在查看器中显示正常,但是当我点击导出为pdf
按钮,它只使用两个离散值中的一个。
这是代码:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
Dim myReport作为新的RapportAIRCOStoringen
Dim paramFields作为新的ParameterFields
Dim paramField作为新的ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRa ngeValue
paramField.ParameterFieldName =" FiliaalKeuze"
discreteVal.Value =" 2044"
paramField.CurrentValues.Add (discreteVal)
discreteVal =新的ParameterDiscreteValue
discreteVal.Value =" 2344"
paramField.CurrentValues.Add(discreteVal )
paramFields.Add(paramField)
paramField =新的ParameterField
paramField.ParameterFieldName =" Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add(rangeVal )
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue(" Periode",rangeVal)
myReport.SetParameterValue(" FiliaalKeuze",discreteVal)
crViewer.ReportSource = myReport
As你可以看到我使用myReport .SetParameterValue来提供pdf。
离散值出错了。它只看到我输入的第二个值
而不是第一个。
如何才能实现这一目标?
亲切的问候,
艾莉森
....... that nobody knows the answer.
I can''t imagine that I am the only one that uses parameters in CR.
So, my question again:
I have the following problem.
(VB.NET 2003 with CR)
I have a report with a multiple-value discrete value and a rangevalue.
The report shows fine in the viewer, but when I hit the export to pdf
button, it only uses one of two discrete values.
This is the code:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Dim myReport As New RapportAIRCOStoringen
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue
paramField.ParameterFieldName = "FiliaalKeuze"
discreteVal.Value = "2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal = New ParameterDiscreteValue
discreteVal.Value = "2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField = New ParameterField
paramField.ParameterFieldName = "Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add(rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue("Periode", rangeVal)
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
crViewer.ReportSource = myReport
As you can see I use myReport.SetParameterValue to feed the pdf.
It goes wrong with the discrete value. It only sees the second value I
entered and not the first.
How can I get this going?
Kind regards,
Alison
推荐答案
哇,你为Crystal Reports做了这一切吗?什么是RapportAIRCOStoringen?
以下是我为CR所做的一切
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load(sReportPath)
''报告不是嵌入资源
x.SetParameterValue(" Paramater1",Paramaters(1))''动态参数
x.SetParameterValue(Paramater2,Paramaters(2))
x.SetDataSource(mydata)''强烈
类型数据集
Me.CrystalReportViewer1.ReportSource = x
Me.CrystalReportViewer1.PrintReport()
''现在回答你的问题你的代码,嗯
好的,首先
从不 - >昏暗x作为新对象
''这是愚蠢,懒惰和不专业。因此,如果你在高中学校,请继续学习。
相反 - >昏暗的x作为对象
设置x =新对象
''保留你的空间和合同
''然后使用它。 />
我认为这是你的问题
myReport.SetParameterValue(" FiliaalKeuze",discreteVal)
为什么要设置crView参数和myReport参数?
- > crViewer.ParameterFieldInfo = paramFields
- > myReport.SetParameterValue(" Periode" ,rangeVal)
我认为myReport是唯一需要设置的思考
我不得不花时间阅读你的代码来了解你在做什么。
这是试图清理它。
Private Sub TestIT()
Dim myReport作为RapportAIRCOStoringen
Dim paramFields As ParameterFields
Dim paramField As ParameterField
Dim BeginPeriode As String
Dim EindPeriode As String
''Todo w尝试一切尝试
paramFields =新的ParameterFields
尝试
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
Catch ex As Exception
Dim exCustom As ApplicationException
exCustom =新的ApplicationException(无法解析查询
Paramaters。,ex)
抛出exCustom
结束尝试
''Todo wrap in try
paramField = CreateParamater(" FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2344))
myReport.SetParameterValue(" FiliaalKeuze",paramField)
''paramFields .Add(paramField) - >不需要
''Todo wrap in try
paramField = CreateParamater(" Periode")
paramField.CurrentValues.Add (CreateParameterRangeV alue(BeginPeriode,
EindPeriode))
myReport.SetParameterValue(" Periode",paramField)
''paramFields.Add( paramField) - >不需要
''Todo wrap in try,我认为你不需要这个
''myReport.SetParameterValue(" Periode",rangeVal) )
''myReport.SetParameterValue(" FiliaalKeuze",discreteVal)
''Todo,确定我们是否需要这一步;我不认为你这样做
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
私有函数CreateParamater(ByVal ParamaterName As String)As
ParameterField
Dim paramField As ParameterField
paramField =新的ParameterField
paramField.ParameterFieldName = ParamaterName
返回paramField
结束函数
私有函数CreateParameterDiscreteValue(ByVal Value As Object)As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
返回paramDiscreteValue
结束函数
私有函数CreateParameterRangeValue(ByVal StartRange作为对象,
ByVal EndRange作为对象)作为ParameterRangeVal ub
Dim paramRangeValue As ParameterRangeValue
paramRangeValue = New ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
返回paramRangeValue
结束功能
" Alison Givens" <在** @ cross-it.nl>在消息中写道
新闻:eW ************* @ TK2MSFTNGP11.phx.gbl ...
Wow, you do all that for Crystal Reports? What is RapportAIRCOStoringen?
Here is all I do for CR
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load(sReportPath)
''Reports are not embedded resources
x.SetParameterValue("Paramater1", Paramaters(1)) ''Dynamic Paramaters
x.SetParameterValue("Paramater2", Paramaters(2))
x.SetDataSource(mydata) ''Strongly
Typed Datasets
Me.CrystalReportViewer1.ReportSource = x
Me.CrystalReportViewer1.PrintReport()
''Now to answer your question about your code, hmm
Ok, first
Never --> Dim x as new object
''This is silly, lazy and unprofessional. So if you are in high
school, keep the course.
Instead --> Dim x as object
Set x = new object
''Reserve your space and contract
''Then make use of it.
I think this is your problem
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
Why are you setting the crView paramaters and the myReport paramaters?
-->crViewer.ParameterFieldInfo = paramFields
-->myReport.SetParameterValue("Periode", rangeVal)
I think that myReport is the only think that needs to be set
I had to spent time reading your code to understand what you were doing.
Here is an attempt to clean it up.
Private Sub TestIT()
Dim myReport As RapportAIRCOStoringen
Dim paramFields As ParameterFields
Dim paramField As ParameterField
Dim BeginPeriode As String
Dim EindPeriode As String
''Todo wrap everything in try
paramFields = New ParameterFields
Try
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Catch ex As Exception
Dim exCustom As ApplicationException
exCustom = New ApplicationException("Unable to parse Query
Paramaters.", ex)
Throw exCustom
End Try
''Todo wrap in try
paramField = CreateParamater("FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2344))
myReport.SetParameterValue("FiliaalKeuze", paramField)
''paramFields.Add(paramField) --> Not needed
''Todo wrap in try
paramField = CreateParamater("Periode")
paramField.CurrentValues.Add(CreateParameterRangeV alue(BeginPeriode,
EindPeriode))
myReport.SetParameterValue("Periode", paramField)
''paramFields.Add(paramField)--> Not needed
''Todo wrap in try, i don''t think you need this
''myReport.SetParameterValue("Periode", rangeVal)
''myReport.SetParameterValue("FiliaalKeuze", discreteVal)
''Todo, determine if we need this step; I don''t think you do
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
Private Function CreateParamater(ByVal ParamaterName As String) As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
Return paramField
End Function
Private Function CreateParameterDiscreteValue(ByVal Value As Object) As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
Return paramDiscreteValue
End Function
Private Function CreateParameterRangeValue(ByVal StartRange As Object,
ByVal EndRange As Object) As ParameterRangeValue
Dim paramRangeValue As ParameterRangeValue
paramRangeValue = New ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
Return paramRangeValue
End Function
"Alison Givens" <in**@cross-it.nl> wrote in message
news:eW*************@TK2MSFTNGP11.phx.gbl...
......没有人知道答案。
我无法想象我是唯一一个在CR中使用参数的人。
所以,我的问题又来了:
我有以下问题。
(VB.NET 2003 with CR)
我有一个具有多值离散值和范围值的报告。
该报告显示正常查看器,但当我按下导出到pdf
按钮时,它只使用两个离散值中的一个。
这是代码:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
Dim myReport As新的RapportAIRCOStoringen
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New Pa rameterRangeValue
paramField.ParameterFieldName =" FiliaalKeuze"
discreteVal.Value =" 2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal =新的ParameterDiscreteValue
discreteVal.Value =" 2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField =新的ParameterField
paramField.ParameterFieldName =" Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add (rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue(" Periode",rangeVal)
myReport .SetParameterValue(" FiliaalKeuze",discreteVal)
crViewer.ReportSource = myReport
正如你所看到的,我使用myReport.SetParameterValue来提供pdf。
它出错了离散值。它只看到我输入的第二个值,而不是第一个。
我怎样才能实现这个目标?
亲切的问候,
艾莉森
...... that nobody knows the answer.
I can''t imagine that I am the only one that uses parameters in CR.
So, my question again:
I have the following problem.
(VB.NET 2003 with CR)
I have a report with a multiple-value discrete value and a rangevalue.
The report shows fine in the viewer, but when I hit the export to pdf
button, it only uses one of two discrete values.
This is the code:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Dim myReport As New RapportAIRCOStoringen
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue
paramField.ParameterFieldName = "FiliaalKeuze"
discreteVal.Value = "2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal = New ParameterDiscreteValue
discreteVal.Value = "2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField = New ParameterField
paramField.ParameterFieldName = "Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add(rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue("Periode", rangeVal)
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
crViewer.ReportSource = myReport
As you can see I use myReport.SetParameterValue to feed the pdf.
It goes wrong with the discrete value. It only sees the second value I
entered and not the first.
How can I get this going?
Kind regards,
Alison
当我使用你的解决方案时,我在这样的文本下面得到蓝线
paramField = CreateParamater(" FiliaalKeuze" ;)
文本是:
类型的''1维数组的值'
CrystalDecisions.Shared.ParameterField''无法转换
到''Crystal.Decisions.Shared.ParameterField''
返回paramField
文本为:
类型''CrystalDecisions.Shared.ParameterField''的值无法转换
到''1维数组Crystal.Decisions.Shared.ParameterField''
相同的
paramField = CreateParamater(" Periode")
返回paramDiscreteValue
任何想法是什么导致这个?
艾莉森
AMDRIT <是**** @ hotmail.com>在留言中写道
news:ur ************* @ TK2MSFTNGP14.phx.gbl ...
When I use your solution I get blue lines under the text like this
paramField = CreateParamater("FiliaalKeuze")
The text is:
Value of type ''1 dimensional array of
CrystalDecisions.Shared.ParameterField'' cannot be converted
to ''Crystal.Decisions.Shared.ParameterField''
Return paramField
The text is:
Value of type ''CrystalDecisions.Shared.ParameterField'' cannot be converted
to ''1 dimensional array of Crystal.Decisions.Shared.ParameterField''
Same for
paramField = CreateParamater("Periode")
Return paramDiscreteValue
Any idea what causes this?
Alison
"AMDRIT" <am****@hotmail.com> wrote in message
news:ur*************@TK2MSFTNGP14.phx.gbl...
哇,你这么做对于Crystal Reports?什么是RapportAIRCOStoringen?
这是我为CR所做的一切
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load( sReportPath)''报告不是嵌入的资源
x.SetParameterValue(Paramater1,Paramaters(1))''动态参数
x.SetParameterValue(" Paramater2",Paramaters(2))< br。> x.SetDataSource(mydata)
''强类型数据集
Me.CrystalReportViewer1.PrintReport()
''现在回答你关于你的代码的问题,嗯
好的,首先
从不 - >昏暗x作为新对象
''这是愚蠢,懒惰和不专业。因此,如果你在高中学校,请继续学习。
相反 - >昏暗x作为对象
设置x =新对象
''保留你的空间和合同
''然后使用它。
我认为这是你的问题
myReport.SetParameterValue(" FiliaalKeuze",discreteVal)
为什么要设置crView参数和myReport参数?
- > crViewer.ParameterFieldInfo = paramFields
- > myReport.SetParameterValue(" Periode",rangeVal)
我认为myReport是唯一需要设置的思考
我不得不花时间阅读你的代码来了解你在做什么。
这是一个尝试清理它。
私人子TestIT()
Dim myReport作为RapportAIRCOStoringen
Dim paramFields作为ParameterFields
Dim paramField作为ParameterField
将Dim BeginPeriode作为字符串
Dim EindPeriode As String
''Todo将所有东西都包裹起来尝试
param Fields = New ParameterFields
尝试
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
Catch ex As异常
Dim exCustom As ApplicationException
exCustom = New ApplicationException(无法解析查询
Paramaters。,ex)
抛出exCustom
结束尝试>
''Todo wrap in try
paramField = CreateParamater(" FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add( CreateParameterDiscre teValue(2344))
myReport.SetParameterValue(" FiliaalKeuze",paramField)
''paramFields.Add(paramField) - >不需要
''Todo wrap in try
paramField = CreateParamater(" Periode")
paramField.CurrentValues.Add(CreateParameterRangeV alue(BeginPeriode,
EindPeriode) )
myReport.SetParameterValue(" Periode",paramField)
''paramFields.Add(paramField) - >不需要
''Todo wrap in try,我认为你不需要这个
''myReport.SetParameterValue(" Periode",rangeVal)
''myReport .SetParameterValue(" FiliaalKeuze",discreteVal)
''Todo,确定我们是否需要这一步;我不认为你做了什么
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
私有函数CreateParamater(ByVal ParamaterName As String)As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
结束函数
私函数CreateParameterDiscreteValue(ByVal Value As Object)As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
返回paramDiscreteValue
结束函数
私有函数CreateParameterRangeValue(ByVal StartRange As Object ,
ByVal EndRange As Object)作为ParameterRangeValue
Dim paramRangeValue As ParameterRangeValue
paramRangeValue =新的ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
返回paramRangeValue
结束功能
Alison Givens <在** @ cross-it.nl>在消息中写道
新闻:eW ************* @ TK2MSFTNGP11.phx.gbl ...
Wow, you do all that for Crystal Reports? What is RapportAIRCOStoringen?
Here is all I do for CR
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load(sReportPath) ''Reports are not embedded resources
x.SetParameterValue("Paramater1", Paramaters(1)) ''Dynamic Paramaters
x.SetParameterValue("Paramater2", Paramaters(2))
x.SetDataSource(mydata)
''Strongly Typed Datasets
Me.CrystalReportViewer1.ReportSource = x
Me.CrystalReportViewer1.PrintReport()
''Now to answer your question about your code, hmm
Ok, first
Never --> Dim x as new object
''This is silly, lazy and unprofessional. So if you are in high
school, keep the course.
Instead --> Dim x as object
Set x = new object
''Reserve your space and contract
''Then make use of it.
I think this is your problem
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
Why are you setting the crView paramaters and the myReport paramaters?
-->crViewer.ParameterFieldInfo = paramFields
-->myReport.SetParameterValue("Periode", rangeVal)
I think that myReport is the only think that needs to be set
I had to spent time reading your code to understand what you were doing.
Here is an attempt to clean it up.
Private Sub TestIT()
Dim myReport As RapportAIRCOStoringen
Dim paramFields As ParameterFields
Dim paramField As ParameterField
Dim BeginPeriode As String
Dim EindPeriode As String
''Todo wrap everything in try
paramFields = New ParameterFields
Try
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Catch ex As Exception
Dim exCustom As ApplicationException
exCustom = New ApplicationException("Unable to parse Query
Paramaters.", ex)
Throw exCustom
End Try
''Todo wrap in try
paramField = CreateParamater("FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2344))
myReport.SetParameterValue("FiliaalKeuze", paramField)
''paramFields.Add(paramField) --> Not needed
''Todo wrap in try
paramField = CreateParamater("Periode")
paramField.CurrentValues.Add(CreateParameterRangeV alue(BeginPeriode,
EindPeriode))
myReport.SetParameterValue("Periode", paramField)
''paramFields.Add(paramField)--> Not needed
''Todo wrap in try, i don''t think you need this
''myReport.SetParameterValue("Periode", rangeVal)
''myReport.SetParameterValue("FiliaalKeuze", discreteVal)
''Todo, determine if we need this step; I don''t think you do
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
Private Function CreateParamater(ByVal ParamaterName As String) As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
Return paramField
End Function
Private Function CreateParameterDiscreteValue(ByVal Value As Object) As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
Return paramDiscreteValue
End Function
Private Function CreateParameterRangeValue(ByVal StartRange As Object,
ByVal EndRange As Object) As ParameterRangeValue
Dim paramRangeValue As ParameterRangeValue
paramRangeValue = New ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
Return paramRangeValue
End Function
"Alison Givens" <in**@cross-it.nl> wrote in message
news:eW*************@TK2MSFTNGP11.phx.gbl...
......没人知道回答。
我无法想象我是唯一一个在CR中使用参数的人。
所以,我的问题又来了:
我有以下几点问题。
(带有CR的VB.NET 2003)
我有一个带有多值离散值和范围值的报告。
报告在查看器中显示正常,但是当我点击导出到pdf
按钮时,它只使用两个离散值中的一个。
这是代码:
Dim BeginPeriode As String
Dim EindPeriode As字符串
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
将myReport视为新的RapportAIRCOStoringen
Dim paramFields作为新的ParameterFields
Dim paramField作为新的ParameterField
Dim discreteVal作为新的ParameterDiscreteValue
Dim rangeVal作为新的参数erRangeValue
paramField.ParameterFieldName =" FiliaalKeuze"
discreteVal.Value =" 2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal =新的ParameterDiscreteValue
discreteVal.Value =" 2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField =新的ParameterField
paramField.ParameterFieldName =" Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add (rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue(" Periode",rangeVal)
myReport .SetParameterValue(" FiliaalKeuze",discreteVal)
crViewer.ReportSource = myReport
正如你所看到的,我使用myReport.SetParameterValue来提供pdf。
它出错了离散值。它只看到我输入的第二个值,而不是第一个。
我怎样才能实现这个目标?
亲切的问候,
艾莉森
...... that nobody knows the answer.
I can''t imagine that I am the only one that uses parameters in CR.
So, my question again:
I have the following problem.
(VB.NET 2003 with CR)
I have a report with a multiple-value discrete value and a rangevalue.
The report shows fine in the viewer, but when I hit the export to pdf
button, it only uses one of two discrete values.
This is the code:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Dim myReport As New RapportAIRCOStoringen
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue
paramField.ParameterFieldName = "FiliaalKeuze"
discreteVal.Value = "2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal = New ParameterDiscreteValue
discreteVal.Value = "2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField = New ParameterField
paramField.ParameterFieldName = "Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add(rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue("Periode", rangeVal)
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
crViewer.ReportSource = myReport
As you can see I use myReport.SetParameterValue to feed the pdf.
It goes wrong with the discrete value. It only sees the second value I
entered and not the first.
How can I get this going?
Kind regards,
Alison
我所做的只是拿走你的代码并将其分解。我还没有测试过代码,而不是b $ b;我只是为了便于阅读而分解你的代码。
你有:
Dim paramField As New ParameterField
paramField =新的ParameterField
paramField.ParameterFieldName =" Periode"
我改为(我没有看到区别):
paramField = CreateParamater(" Periode")
私有函数CreateParamater(ByVal ParamaterName As String)As
ParameterField
Dim paramField As ParameterField
paramField =新的ParameterField
paramField.ParameterFieldName = ParamaterName
返回paramField
结束功能
也许你可以分享你的结果代码进行比较?您是否看到
我建议您的代码中的错误是
myReport.SetParameterValue(" FiliaalKeuze",discreteVal)''您只需要调用此
语句一次(实际上是2344),但你想要两个值。
Alison Givens <在** @ cross-it.nl>写在消息
新闻:ee ************** @ TK2MSFTNGP09.phx.gbl ...
All I did was take your code and break it up. I haven''t tested the code,
rather; I was just breaking up your code for readability.
You had:
Dim paramField As New ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = "Periode"
I changed to (I don''t see a difference):
paramField = CreateParamater("Periode")
Private Function CreateParamater(ByVal ParamaterName As String) As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
Return paramField
End Function
Perhaps you could share your resulting code for comparison? Did you see
that I suggested the error in your code was
myReport.SetParameterValue("FiliaalKeuze", discreteVal) ''You only call this
statement once (Effectively 2344) but you wanted two values.
"Alison Givens" <in**@cross-it.nl> wrote in message
news:ee**************@TK2MSFTNGP09.phx.gbl...
当我使用你的解决方案时我在这样的文本下面得到蓝线
paramField = CreateParamater(" FiliaalKeuze")
文本是:
类型''1维数组的值
CrystalDecisions.Shared.ParameterField''无法转换为''Crystal.Decisions.Shared.ParameterField''
返回paramField
文本是:
值类型''CrystalDecisions.Shared.ParameterField''无法转换为''1维数组Crystal.Decisions.Shared.ParameterField''
相同的
paramField = CreateParamater(Periode)
返回paramDiscreteValue
任何想法是什么原因导致的?
" AMDRIT" <是**** @ hotmail.com>在消息中写道
新闻:ur ************* @ TK2MSFTNGP14.phx.gbl ...
When I use your solution I get blue lines under the text like this
paramField = CreateParamater("FiliaalKeuze")
The text is:
Value of type ''1 dimensional array of
CrystalDecisions.Shared.ParameterField'' cannot be converted
to ''Crystal.Decisions.Shared.ParameterField''
Return paramField
The text is:
Value of type ''CrystalDecisions.Shared.ParameterField'' cannot be converted
to ''1 dimensional array of Crystal.Decisions.Shared.ParameterField''
Same for
paramField = CreateParamater("Periode")
Return paramDiscreteValue
Any idea what causes this?
Alison
"AMDRIT" <am****@hotmail.com> wrote in message
news:ur*************@TK2MSFTNGP14.phx.gbl...
哇,你为Crystal Reports做了这一切吗?什么是RapportAIRCOStoringen?
这是我为CR所做的一切
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load( sReportPath)''报告不是嵌入的资源
x.SetParameterValue(Paramater1,Paramaters(1))''动态参数
x.SetParameterValue(" Paramater2",Paramaters(2))
x.SetDataSource(mydata)''强类型数据集
Me.CrystalReportViewer1.ReportSource = x
Me.CrystalReportViewer1.PrintReport()
''现在回答你关于你的代码的问题,嗯
好的,首先
从不 - >昏暗x作为新对象
''这是愚蠢,懒惰和不专业。因此,如果你在高中学校,请继续学习。
相反 - >昏暗x作为对象
设置x =新对象
''保留你的空间和合同
''然后使用它。
我认为这是你的问题
myReport.SetParameterValue(" FiliaalKeuze",discreteVal)
为什么要设置crView参数和myReport参数?
- > crViewer.ParameterFieldInfo = paramFields
- > myReport.SetParameterValue(" Periode",rangeVal)
我认为myReport是唯一需要设置的思考
我不得不花时间阅读你的代码来了解你在做什么。
这是一个尝试清理它。
私人子TestIT()
Dim myReport作为RapportAIRCOStoringen
Dim paramFields作为ParameterFields
Dim paramField作为ParameterField
将Dim BeginPeriode作为字符串
Dim EindPeriode As String
''Todo将所有东西都包裹起来尝试
param Fields = New ParameterFields
尝试
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
Catch ex As异常
Dim exCustom As ApplicationException
exCustom = New ApplicationException(无法解析查询
Paramaters。,ex)
抛出exCustom
结束尝试>
''Todo wrap in try
paramField = CreateParamater(" FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add( CreateParameterDiscre teValue(2344))
myReport.SetParameterValue(" FiliaalKeuze",paramField)
''paramFields.Add(paramField) - >不需要
''Todo wrap in try
paramField = CreateParamater(" Periode")
paramField.CurrentValues.Add(CreateParameterRangeV alue(BeginPeriode,
EindPeriode) )
myReport.SetParameterValue(" Periode",paramField)
''paramFields.Add(paramField) - >不需要
''Todo wrap in try,我认为你不需要这个
''myReport.SetParameterValue(" Periode",rangeVal)
''myReport .SetParameterValue(" FiliaalKeuze",discreteVal)
''Todo,确定我们是否需要这一步;我不认为你做了什么
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
私有函数CreateParamater(ByVal ParamaterName As String)As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
结束函数
私函数CreateParameterDiscreteValue(ByVal Value As Object)As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
返回paramDiscreteValue
结束函数
私有函数CreateParameterRangeValue(ByVal StartRange As Object ,
ByVal EndRange As Object)作为ParameterRangeValue
Dim paramRangeValue As ParameterRangeValue
paramRangeValue =新的ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
返回paramRangeValue
结束功能
Alison Givens <在** @ cross-it.nl>在消息中写道
新闻:eW ************* @ TK2MSFTNGP11.phx.gbl ...
Wow, you do all that for Crystal Reports? What is RapportAIRCOStoringen?
Here is all I do for CR
Dim x As CrystalDecisions.CrystalReports.Engine.ReportDocum ent
x.Load(sReportPath) ''Reports are not embedded resources
x.SetParameterValue("Paramater1", Paramaters(1)) ''Dynamic Paramaters
x.SetParameterValue("Paramater2", Paramaters(2))
x.SetDataSource(mydata) ''Strongly Typed Datasets
Me.CrystalReportViewer1.ReportSource = x
Me.CrystalReportViewer1.PrintReport()
''Now to answer your question about your code, hmm
Ok, first
Never --> Dim x as new object
''This is silly, lazy and unprofessional. So if you are in high
school, keep the course.
Instead --> Dim x as object
Set x = new object
''Reserve your space and contract
''Then make use of it.
I think this is your problem
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
Why are you setting the crView paramaters and the myReport paramaters?
-->crViewer.ParameterFieldInfo = paramFields
-->myReport.SetParameterValue("Periode", rangeVal)
I think that myReport is the only think that needs to be set
I had to spent time reading your code to understand what you were doing.
Here is an attempt to clean it up.
Private Sub TestIT()
Dim myReport As RapportAIRCOStoringen
Dim paramFields As ParameterFields
Dim paramField As ParameterField
Dim BeginPeriode As String
Dim EindPeriode As String
''Todo wrap everything in try
paramFields = New ParameterFields
Try
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Catch ex As Exception
Dim exCustom As ApplicationException
exCustom = New ApplicationException("Unable to parse Query
Paramaters.", ex)
Throw exCustom
End Try
''Todo wrap in try
paramField = CreateParamater("FiliaalKeuze")
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2044))
paramField.CurrentValues.Add(CreateParameterDiscre teValue(2344))
myReport.SetParameterValue("FiliaalKeuze", paramField)
''paramFields.Add(paramField) --> Not needed
''Todo wrap in try
paramField = CreateParamater("Periode")
paramField.CurrentValues.Add(CreateParameterRangeV alue(BeginPeriode,
EindPeriode))
myReport.SetParameterValue("Periode", paramField)
''paramFields.Add(paramField)--> Not needed
''Todo wrap in try, i don''t think you need this
''myReport.SetParameterValue("Periode", rangeVal)
''myReport.SetParameterValue("FiliaalKeuze", discreteVal)
''Todo, determine if we need this step; I don''t think you do
''crViewer.ParameterFieldInfo = paramFields
crViewer.ReportSource = myReport
End Sub
Private Function CreateParamater(ByVal ParamaterName As String) As
ParameterField
Dim paramField As ParameterField
paramField = New ParameterField
paramField.ParameterFieldName = ParamaterName
Return paramField
End Function
Private Function CreateParameterDiscreteValue(ByVal Value As Object) As
ParameterDiscreteValue
Dim paramDiscreteValue As ParameterDiscreteValue
paramDiscreteValue = New ParameterDiscreteValue
paramDiscreteValue = Value
Return paramDiscreteValue
End Function
Private Function CreateParameterRangeValue(ByVal StartRange As Object,
ByVal EndRange As Object) As ParameterRangeValue
Dim paramRangeValue As ParameterRangeValue
paramRangeValue = New ParameterRangeValue
paramRangeValue.StartValue = StartRange
paramRangeValue.EndValue = EndRange
Return paramRangeValue
End Function
"Alison Givens" <in**@cross-it.nl> wrote in message
news:eW*************@TK2MSFTNGP11.phx.gbl...
......没人知道回答。
我无法想象我是唯一一个在CR中使用参数的人。
所以,我的问题又来了:
我有以下几点问题。
(带有CR的VB.NET 2003)
我有一个带有多值离散值和范围值的报告。
报告在查看器中显示正常,但是当我点击导出到pdf
按钮时,它只使用两个离散值中的一个。
这是代码:
Dim BeginPeriode As String
Dim EindPeriode As字符串
BeginPeriode = Request.QueryString(" BeginPeriode")
EindPeriode = Request.QueryString(" EindPeriode")
将myReport视为新的RapportAIRCOStoringen
Dim paramFields作为新的ParameterFields
Dim paramField作为新的ParameterField
Dim discreteVal作为新的ParameterDiscreteValue
Dim rangeVal作为新的参数erRangeValue
paramField.ParameterFieldName =" FiliaalKeuze"
discreteVal.Value =" 2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal =新的ParameterDiscreteValue
discreteVal.Value =" 2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField =新的ParameterField
paramField.ParameterFieldName =" Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add (rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue(" Periode",rangeVal)
myReport .SetParameterValue(" FiliaalKeuze",discreteVal)
crViewer.ReportSource = myReport
正如你所看到的,我使用myReport.SetParameterValue来提供pdf。
它出错了离散值。它只看到我输入的第二个值,而不是第一个。
我怎样才能实现这个目标?
亲切的问候,
艾莉森
...... that nobody knows the answer.
I can''t imagine that I am the only one that uses parameters in CR.
So, my question again:
I have the following problem.
(VB.NET 2003 with CR)
I have a report with a multiple-value discrete value and a rangevalue.
The report shows fine in the viewer, but when I hit the export to pdf
button, it only uses one of two discrete values.
This is the code:
Dim BeginPeriode As String
Dim EindPeriode As String
BeginPeriode = Request.QueryString("BeginPeriode")
EindPeriode = Request.QueryString("EindPeriode")
Dim myReport As New RapportAIRCOStoringen
Dim paramFields As New ParameterFields
Dim paramField As New ParameterField
Dim discreteVal As New ParameterDiscreteValue
Dim rangeVal As New ParameterRangeValue
paramField.ParameterFieldName = "FiliaalKeuze"
discreteVal.Value = "2044"
paramField.CurrentValues.Add(discreteVal)
discreteVal = New ParameterDiscreteValue
discreteVal.Value = "2344"
paramField.CurrentValues.Add(discreteVal)
paramFields.Add(paramField)
paramField = New ParameterField
paramField.ParameterFieldName = "Periode"
rangeVal.StartValue = BeginPeriode
rangeVal.EndValue = EindPeriode
paramField.CurrentValues.Add(rangeVal)
paramFields.Add(paramField)
crViewer.ParameterFieldInfo = paramFields
myReport.SetParameterValue("Periode", rangeVal)
myReport.SetParameterValue("FiliaalKeuze", discreteVal)
crViewer.ReportSource = myReport
As you can see I use myReport.SetParameterValue to feed the pdf.
It goes wrong with the discrete value. It only sees the second value I
entered and not the first.
How can I get this going?
Kind regards,
Alison
这篇关于这怎么可能 ...的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!