2009-06-09 17 views
0

SQLデータベースでは、テーブルがTable1です。この表は別の表に関連しています。Table2Table3に関連しています。 Table1から特定のレコードを選択するクエリQuery1があります。Accessでサブフォームを使用したフォームのフィルタリング

このデータベースは、フォームTable1Dataが関連Table2データ(及びその後Table3データ)を含むデータシートと、Table1に基づいている

Accessデータベースプロジェクト内にリンクされています。このフォームは別のフォーム(Switchboard)で開きます。この問題は、フォームが開かれたときに発生します。フォームをフィルタリングしたいが、マクロを設定してフォームを開き、フィルタをQuery1に設定すると、フォームのデータがフィルタリングされない。なぜこれが起こるのですか、これを行う方法ではありませんか? Query1Table1からすべての列を選択するので、不一致の列は問題ではありません。

さらに、特定の人だけがQuery1を実行でき、他のクエリ(Query2Query3など)と同じものを実行できます。したがって、編集が許可されているデータだけを編集することができます。

答えて

0

私の好ましい解決策は、フォームオープンイベントでレコードソースを設定することです。これは、私に何が起こっているかを最大限に制御します。

ここにこれを行うための私の定型句があります。また、フォームの呼び出し時に渡されるOpenArgsを参照することも含まれます。 SQLの呼び出しフォームから何も指定しない場合は、If/Thenステートメントをコメントアウトまたは削除するだけで済みます。

+0

実行中の変数と変数セットの結果となるマクロのOpenFormアクションがありますか? – SamWM

+0

できるだけ早くマクロから離れてください。それらには汎用性がなく、誤り訂正がありません。マクロは初心者向けです。 Accessを数週間使用した後は、必要な2つの機能(AutoExecとAutoKeys)を除いて、Accessを作成してはなりません。 –

+0

質問に記載されているフォームTable1Dataを開くと、OpenFormアクションが発生します。コードはRecordsourceをSQL文字列に設定して実行し、.Requeryは新しいRecordSourceに基づいてフォームを描画します。 また、デイヴィッド・フェントンと私は、マクロを使用すべきではないことに同意します。ただし、私はこれらの問題を回避するためにAutoExecとAutoKeysで使用することさえしません。 –

関連する問題