按组合框值过滤Crystal Report

时间:2012-06-11 12:45:48

标签: c# crystal-reports crystal-reports-2008

我有2个组合框cmb1和cmb2,一个按钮和一个crystalreportviewer,cmb1显示Std和cmb2显示Div,这两个值都是从数据库中提取的。我是水晶报告的新手并且混淆了如何使用选择字段和所有..i我希望当我选择其中一个或两个组合框并点击按钮时,数据应在水晶报告中过滤并显示在crystalreportviewer..eg中。我在cmb1中选择'5',在cmb2中选择'A',然后只显示来自5类A的记录。 C#VS2008,带VS2008的默认水晶报告.. 提前谢谢

2 个答案:

答案 0 :(得分:0)

可以有两种方法来做这件事

1)首先,您必须使用前端的组合值过滤数据表,然后使用SetDataSource()函数将过滤后的数据表重新分配给水晶报告。

 rptMembership objMembership = new rptMembership();
 DataView dv =new DataView(ReportDataTable);    
 // Filtering data on combo values.
 dv.Filter = "combo1id = 1 and combo2id = 2"
 objMembership.SetDataSource(dv.ToTable());
 rptViewer.ReportSource =  objMembership;

2)其次,您可以根据组合值过滤数据库末端的记录,然后重新将新数据表分配给水晶。

没有直接的方法来过滤水晶报告级别的记录。

答案 1 :(得分:0)

在组合框中尝试此代码:

        report rd = new report();

        // set database login information
        rd.SetDatabaseLogon("username", "password", @"NOHA-PC\SQLEXPRESS", "dbname");

        // write formula to pass parameters to report
        crystalReportViewer1.SelectionFormula = "{tablename.columnname} =" + comboBox1.SelectedValue;
        crystalReportViewer1.ReportSource = rd;