Vb.net 设置参数值时,Crystal Report会随机中断

Vb.net 设置参数值时,Crystal Report会随机中断,vb.net,crystal-reports,Vb.net,Crystal Reports,我已经到处寻找解决方法,所以如果这是一个愚蠢的问题或重复的问题,我会提前道歉 所以我有这个水晶报告,不,不幸的是,我不知道我使用的版本,它在大多数情况下工作,并且在与工作时完全相同的条件下随机中断。在它中断时,当我使用ApplyCurrentValue设置参数时,它会立即弹出一个窗口,询问所有参数(好像没有设置任何参数)。当我按下exit时,它与 System.NullReferenceException:对象引用未设置为实例 指一个物体。在 CrystalDecisions.CrystalRe

我已经到处寻找解决方法,所以如果这是一个愚蠢的问题或重复的问题,我会提前道歉

所以我有这个水晶报告,不,不幸的是,我不知道我使用的版本,它在大多数情况下工作,并且在与工作时完全相同的条件下随机中断。在它中断时,当我使用ApplyCurrentValue设置参数时,它会立即弹出一个窗口,询问所有参数(好像没有设置任何参数)。当我按下exit时,它与

System.NullReferenceException:对象引用未设置为实例 指一个物体。在 CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition.ApplyCurrentValues(ParameterValues 当前值)

下面是代码。另外,我传递的每个参数都是正确的值,因此它们都不是空的,实际上都有值

rpt.SetDataSource(ds)
crv.ReportSource = rpt

AddCrystalReportParameters("EntityName", entityName)
AddCrystalReportParameters("dtFrom", datFrom.ToShortDateString())
AddCrystalReportParameters("dtTo", datTo.ToShortDateString())
AddCrystalReportParameters("RectEntityDesc", rectEntityDesc)
这是我使用的方法

Sub AddCrystalReportParameters(ByVal sFieldName As String, ByVal sValue As String)
    Dim discreteValue As New ParameterDiscreteValue()
    Dim values As New ParameterValues()

    values = rpt.DataDefinition.ParameterFields(sFieldName).CurrentValues()
    discreteValue.Value = sValue 'Assign parameter
    values.Add(discreteValue)
    rpt.DataDefinition.ParameterFields(sFieldName).ApplyCurrentValues(values)
End Sub
因为它在断裂时是随机的,所以测试起来非常困难。我想可能报告没有加载,但我检查了rpt.IsLoaded,它在报告中说,即使在添加参数时报告继续中断,也没有加载


谢谢你的帮助

如果使用SetDataSource设置数据源,则无需设置参数

首先在报告本身中创建名称为(EntityName、dtFrom、dtTo和RecentityDesc)的参数,如您所述。然后将这些参数作为对象添加到报告中,然后在代码中,您可以将这些值设置为以下代码:

    rpt.SetParameterValue("@EntityName", EntityName)
    rpt.SetParameterValue("@dtFrom", dtFrom.SelectedDate)
    rpt.SetParameterValue("@dtTo", dtTo.SelectedDate)
    rpt.SetParameterValue("@RectEntityDesc", rectEntityDesc)

之所以使用此代码,是因为您已经将参数添加到报告中,您只是在设置每个参数的值。

在这种情况下,我想我会这样做。日期是由用户输入的值,因此它们将是用户想要的任何内容,因此我必须将其传递到Crystal Report。我尝试过,但遗憾的是,它也没有起作用。这是如此奇怪,如此随机的原因,它打破。有时有效,其他时候无效。你在问题中所说的条件是什么??如果参数或其中一个参数为空,是否会中断??