这怎么可能 ... [英] How is it possible ...

查看:66
本文介绍了这怎么可能 ...的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.......没人知道答案。

我无法想象我是唯一一个在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆