我为一个报告继承了现有的Crystal Report(.rpt),该报告打印了相关数据集中的所有记录。
我现在想添加选择标准,以便只在报告上打印带有匹配票号的结果。
我输入的选择标准是:
{REGISTER.TICKET_NO} = {?sTicketNo}
sTicketNo反映了我从C#中的文本框中读取的文本值,并作为参数传递给Crystal Reports。 (参数传递肯定有效。当我将sTicketNo字段添加到报表时,它会打印我在文本框中输入的正确值。)
问题在于,无论我输入什么选择标准,报告都不会被过滤。无论标准如何,它始终打印所有记录。我已经使用其他硬编码标准进行了测试,例如仅选择具有非空值的记录。
我也尝试过C# and Crystal Reports SDK - Selection Criteria Ignored的建议但没有成功。
Crystal Reports中是否还有其他地方您必须指定您不希望打印所有记录?我在菜单中添加了我的选择标准" Crystal Reports" > "报告" > "选择专家" > "记录&#34 ;.我对水晶报道很新。也许该报告的作者在其他地方添加了一些设置以忽略选择标准,但我不确定在哪里看......
答案 0 :(得分:12)
有同样的问题 - 找到了这个解决方案。为VS 2010工作,尽管它提到了VS 2005/2008。
症状
升级VS .NET应用程序以在Visual Studio .NET 2005中使用Crystal Reports 2008时,将忽略选择公式(.RecordSelectionFormula)。
原因
在Visual Studio .NET 2005中,当Crystal Windows窗体查看器添加到Windows窗体时,自动生成的代码会添加两行代码,将选择公式设置为空字符串(“”)。默认情况下,查看器的SelectionFormula和ViewTimeSelectionFormula
设置为“”,因此,应用程序将忽略选择公式,无论是在报表设计器中还是在运行时传递给报表。
分辨率
要解决此问题,请按以下步骤操作:
展开Form1.vb|cs
以显示Form1.Designer.vb|cs
。
(form1
表示包含查看器的表单)
双击Form1.Designer.vb|cs
以显示其代码。
在InitializeComponent方法中,您将找到设置CrystalReportViewer1
属性的代码。
注释掉或删除以下两行:
me.crystalReportViewer.SelectionFormula = ""
me.crystalReportViewer.ViewTimeSelectionFormula = ""