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'";