C# Winform到Crystal报告值更改
为什么来自某个Winform的值在传递到报表时会发生更改 例如,在表单中,我有一个字符串1311-0015,但当我将其传递到公式字段时,它将变成1296.00 将其传递给TextObject不会改变值,它仍然是1311-0015,但我不能在Crystal Report的公式中使用TextObjects 想知道为什么会发生这种情况,以及如何解决问题 这是winForm中的代码: report.DataDefinition.FormulaFields[“SOS”].Text=transactionId;((TextObject)report.Section2.ReportObjects[“Text3”])。Text=transactionId 我传递给crystal报告的值: 公共字符串transactionId=“1311-0015”C# Winform到Crystal报告值更改,c#,winforms,crystal-reports,C#,Winforms,Crystal Reports,为什么来自某个Winform的值在传递到报表时会发生更改 例如,在表单中,我有一个字符串1311-0015,但当我将其传递到公式字段时,它将变成1296.00 将其传递给TextObject不会改变值,它仍然是1311-0015,但我不能在Crystal Report的公式中使用TextObjects 想知道为什么会发生这种情况,以及如何解决问题 这是winForm中的代码: report.DataDefinition.FormulaFields[“SOS”].Text=transaction
您说过要将值传递给公式字段。如果公式中没有任何内容,您将1311-15传递给公式,它将对其进行计算。不要使用公式字段,而是使用文本框或修改字符串,使其不会像公式一样出现。对于transactionID值,请尝试以下操作:
""1311" & "-" & "0015""
您可能需要有两个单独的公共字符串transactionId变量。您可以将此字符串作为参数传递。 首先,在Crystal Reports编辑器中创建一个参数字段。(右键,新…) 代码如下:
string transactionID = "1311-0015";
yourRpt.SetDatasource(youDataSource);
yourRpt.Parameters.SetParameterValue("transactionID", transactionID);
现在,您只需要将参数字段拖放到报表中。您应该创建一个参数并在公式中使用其值。 为了避免显示“参数”对话框,请确保设置了参数值(您应该在代码中执行此操作)并设置:
yourReport.enableparametercompating=false 它把它看作一个数学方程式。试着用引号把它引起来。还要粘贴你的代码,这样我们才能更好地了解发生了什么。那么transactionID需要是一个数字?我已经添加了更多细节扫描你发布的水晶公式?您将无法将带有破折号的数字作为数字传递。当我将其传递到FormulaField时,它只需要停留在1311-0015,但它会变为1296.00。如果我使用参数字段,则始终会弹出一个参数提示。不要使用刷新,或设置为重复使用过去的参数数据。您不能使用数据集吗?我总是使用数据集来填写我的报告。但对于小的更改,我使用参数。您是否在没有刷新的情况下进行了测试?