C# 按组合框值筛选Crystal报表

C# 按组合框值筛选Crystal报表,c#,crystal-reports,crystal-reports-2008,C#,Crystal Reports,Crystal Reports 2008,我有两个组合框cmb1和cmb2,一个按钮和一个crystalreportviewer,cmb1显示Std,cmb2显示Div,这两个值都是从数据库中提取的。我不熟悉crystal report,不知道如何使用选择字段和全部..我希望当我选择其中一个或两个组合框并单击按钮时,数据应该在crystal report中过滤并显示在crystal ReportViewer中。我在cmb1中选择“5”,在cmb2中选择“A”,则只应显示来自类别5 A的记录。。 C VS2008,带VS2008的默认cr

我有两个组合框cmb1和cmb2,一个按钮和一个crystalreportviewer,cmb1显示Std,cmb2显示Div,这两个值都是从数据库中提取的。我不熟悉crystal report,不知道如何使用选择字段和全部..我希望当我选择其中一个或两个组合框并单击按钮时,数据应该在crystal report中过滤并显示在crystal ReportViewer中。我在cmb1中选择“5”,在cmb2中选择“A”,则只应显示来自类别5 A的记录。。 C VS2008,带VS2008的默认crystal报表。。
提前谢谢你

有两种方法可以做到这一点

1首先,您必须在前端根据combo的值过滤数据表,然后使用SetDataSource函数将过滤后的数据表重新分配给crystal report

 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其次,您可以根据组合值过滤数据库端的记录,然后将新数据表重新分配给crystal


没有在crystal report级别直接筛选记录的方法。

请在组合框中尝试以下代码:

        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;

请尝试此代码,并让我知道您的问题已解决。如果没有,那么分享你的代码。