0

私は2つのコンボボックスcmb1とcmb2、ボタンとcrystalreportviewerを持っています.cmb1はStdを表示し、cmb2はDivを表示します.両方の値はデータベースから抽出されます。コンボボックスのいずれかまたは両方を選択してボタンをクリックすると、データが Crystal レポートでフィルタリングされ、crystalreportviewer に表示されます。cmb1 で '5' を選択し、cmb2 で 'A' を選択すると、クラス 5 A のレコードのみが表示されます.. C# VS2008 、VS2008 のデフォルトの Crystal レポート .. よろしくお願いします

4

2 に答える 2

0

これを行うには2つの方法があります

1) まず、フロント エンドでコンボの値に関してデータ テーブルをフィルタリングし、SetDataSource() 関数を使用してフィルタリングされたデータ テーブルを Crystal レポートに再割り当てする必要があります。

 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 レポート レベルでレコードを直接フィルタリングする方法はありません。

于 2012-06-12T07:41:34.397 に答える
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;
于 2014-01-07T19:00:05.970 に答える