0

私はアクセスとvbaに非常に慣れていません。

アクセス データベースを作成し、レポートを作成しました。レポートの列の 1 つが日付列であり、動的ユーザー フィルターを作成したいと考えています。ユーザーは日付範囲を入力でき、クエリはそのフィルターを受け入れることができます。

Access 2013 を使用しています。プロパティ シートにルックアップ セクションがあり、テキスト ボックス、リスト ボックス、またはコンボ ボックスを選択できます。「入力マスク」セクションも表示されます。これらを使用する必要がありますか? どこでもvbaコードが必要ですか?

4

2 に答える 2

2

これには 2 つの方法があります。どの方法を使用するかは、移動するデータの量などの要因によって異なります。

例として、ShipDate というフィールドがあり、6 月 1 日から 6 月 10 日までの間に出荷されたものをすべて表示したいとしtxtStartDateますtxtEndDate

使用するFilter

Reports![MyReportName].RecordSource = "MyQuery"
Reports![MyReportName].Filter = "ShipDate BETWEEN #" & txtStartDate & "# AND #" & txtEndDate & "#"
Reports![MyReportName].FilterOn = True
  • 肯定的: 変更するだけで済みFilterFilterOn
  • 否定的: (私はこれについて誤解している可能性があります。間違っている場合は誰かが私を訂正してくれることを願っています)データがデスクトップではなくネットワーク上の場所にある場合、実際にはクエリ全体をコンピューターにプルしてから、画面でフィルタリングしています。 .

SQL 文字列の編集

strSQL = "SELECT ShipDate FROM MyTable WHERE ShipDate BETWEEN #" & txtStartDate & "# AND #" & txtEndDate & "#"
Reports![MyReportName].RecordSource = strSQL

- 正: 表示に必要な最低限のレコードのみを取得する - 負: クエリ文字列を作成し、RecordSource

数百を超えるレコードを返すクエリを使い始めるまで、私は個人的にフィルター メソッドを使用します。約 5 万件のレコードを返すクエリを実行したとき以外は、2 つの方法の間に大きな時間差はありませんでした。

于 2013-06-20T18:15:00.497 に答える
1

私は通常、ユーザーが追加できる動的な情報を含むフォームを作成します。単一の日付フィールドでも構いません。

レポートの背後にあるクエリには、使用している日付フィールドが含まれ、基準に入れることができます

=[Forms]![MyFormName]![MyTextBoxName]

MyFormName は上記のフォームの名前で、MyTextboxName はユーザーが日付を入力するテキスト ボックスの名前です。

次に、レポートを開くボタンをフォームに配置します。終わり!

于 2013-06-20T17:54:35.493 に答える