Filterプロパティを使用して、 RecordSourceプロパティを変更せずに、レポートに含めるレコードを制限します。
フィルタの使用は、 RecordSourceプロパティに割り当てられた SQL 文で WHERE 句を指定することに似ています。どちらの方法も、指定された条件に基づいてデータをフィルタします。違いは、 Filterプロパティはすでにメモリにロードされているテーブルに適用されますが、WHERE 文ではフィルタされたレコードだけがデータベースからメモリにロードされることです。
大きなテーブルのごく一部だけを含むレポートを作成する場合は、テーブル全体をメモリにロードする必要がないため、WHERE 文の方が適しています。一方、テーブルがすでにメモリにロードされている場合は、さらにデータをロードする必要がないため、 Filterプロパティの方が適しています。
フィルタ式の構文は、 System.Data.DataViewオブジェクトの System.Data.DataView.RowFilterプロパティで使用される構文と同じです。式は「 ColumnNameOperatorValue」形式の条件で構成されます。 ColumnNameはデータソース内の列の名前(オプションで [ ] で囲む)、 Operatorは標準の Visual Basic 比較演算子の1つ、 Valueは一重引用符で囲まれたリテラルです。条件は、 AND演算子と OR演算子を使って組み合わせることができます。
Filter
プロパティを使ってデータソースにフィルタを適用する方法と、SQL 文で WHERE 句を使ってデータソースにフィルタを適用する方法を示します。
if (useFilterProperty) { // すべてのレコードをロードし、メモリ内でフィルタします _c1r.DataSource.RecordSource = "SELECT * from Employees"; _c1r.DataSource.Filter = "HireDate >= '1/1/1993' AND Country = 'UK'"; } else { // 選択したレコードだけをロードします _c1r.DataSource.RecordSource = "SELECT * from Employees " + "WHERE HireDate >= #1/1/1993# AND Country = 'UK'"; }