これは実際にはかなり大きなトピックであり、あらゆる種類の潜在的な問題をはらんでいます。Access に関するほとんどの中級から上級の書籍には、「フォームによるクエリ」について説明するセクションがあり、ユーザーが特定の基準を選択できるバインドされていないフォームがあり、実行するとオンザフライで SQL を記述して、一致するデータ。
フラットな単一テーブルのデータ構造以外では、SQL の FROM 句は WHERE 句でクエリされるテーブルに依存するため、これは簡単な作業ではありません。
私がクライアント用に作成したアプリの QBF フォームの例をいくつか示します。
- 基礎となる 4 つのテーブルのクエリ
- フラットな単一テーブルのクエリ
- 基礎となる 3 つのテーブルのクエリ
- 基礎となる 6 つのテーブルのクエリ
- 2 つの基になるテーブルのクエリ
最初のものは、このフォームで選択された条件を反映するプロパティを持ち、FROM 句と WHERE 句を記述するメソッドを持つクラス モジュールによって駆動されます。これにより、他のフィールドを非常に簡単に追加できます (それらのフィールドが、既に含まれているテーブル以外のテーブルから取得されていない場合に限ります)。
プロセスの最も複雑な部分は FROM 句を記述することです。これは、適切な結合タイプを用意し、SELECT 句または WHERE 句のいずれかにあるテーブルのみを含める必要があるためです。他のものを含めると、クエリが大幅に遅くなります (特に外部結合がある場合)。
しかし、これは大きなテーマであり、特効薬の解決策はありません。代わりに、このようなものを特定のアプリケーションごとに作成する必要があります。開発者であるあなたにとって完全に明確で理解できることは、エンドユーザーにとっては非常に不可解であることが多いため、ユーザーと一緒に徹底的にテストすることも重要です。
しかし、それは QBF だけに当てはまる原則ではありません。