-1

Microsoft Access で、特定のフィールドでのみ検索可能で、フォーム上の少数の (必要な) テキスト ボックスとチェック ボックスのみで制御されるデータベースを作成して、使いやすく、難しいクエリを使用しないようにするにはどうすればよいでしょうか?

例: フォームに複数のテキスト ボックスとそれに対応する複数のチェック ボックスがあり、テキスト ボックスの横にあるチェック ボックスをオンにすると、テキスト ボックスが有効になり、テキスト ボックスに入力された内容で検索できます。

(実際には、私はすでにこれを知っています.stackoverflow jeopardyをプレイしているだけで、世界のコーディング知識を増やすためだけに答えを知っています.答えは約5分です)

4

5 に答える 5

1

私自身の解決策は、フィルターをかけたい各列(通常はすべて...)のフォームのヘッダー部分に「フィルター」コントロールを追加することです。このような「フィルター」コントロールが更新されるたびに、Access VBAで使用可能な「BuildCriteria」関数を使用して、フォームのアクティブなフィルターを更新するためのプロシージャが実行されます。

したがって、*cable*発注書の説明列の上部にある「フィルター」に「」と入力すると、「WHERE PODescriptionISLIKE *cable*」がMyForm.filterプロパティに自動的に追加されます...。

複数の基礎となるテーブルで構成されるレコードソースのフィルタリングが非常にトリッキーになる可能性があることに反対する人もいます。それは正しい。したがって、最善の解決策は、フォームのレコードソースとして常にフラットテーブルまたはビュー(Accessの「SELECT」クエリ)を使用することです。これはあなたの人生をずっと楽にしてくれるでしょう!

これを確信したら、フォームへの「フィルター」コントロールと関連する手順の追加を自動化する小さなモジュールを考えることもできます。あなたは本当のユーザーフレンドリーなクライアントインターフェースのための正しい道にいるでしょう。

于 2008-09-16T14:18:23.623 に答える
0

あいまいな質問については、MS Access を開いてマウスを数回クリックするだけで答えることができます。

考え直して:
"OpenForm" メソッドの "WhereCondition" 引数を使用する

于 2008-09-16T14:05:59.677 に答える
0

起動時に、フォームを表示し、他のメニューなどを無効にする必要があります。これにより、ユーザーは制限された機能のみを表示し、テーブルなどを直接開くことができなくなります。

この本の抜粋、Real World Microsoft Access Database Protection and Securityは、啓発的なものになるはずです。

于 2008-09-16T14:07:28.097 に答える
0

これは実際にはかなり大きなトピックであり、あらゆる種類の潜在的な問題をはらんでいます。Access に関するほとんどの中級から上級の書籍には、「フォームによるクエリ」について説明するセクションがあり、ユーザーが特定の基準を選択できるバインドされていないフォームがあり、実行するとオンザフライで SQL を記述して、一致するデータ。

フラットな単一テーブルのデータ構造以外では、SQL の FROM 句は WHERE 句でクエリされるテーブルに依存するため、これは簡単な作業ではありません。

私がクライアント用に作成したアプリの QBF フォームの例をいくつか示します。

  1. 基礎となる 4 つのテーブルのクエリ
  2. フラットな単一テーブルのクエリ
  3. 基礎となる 3 つのテーブルのクエリ
  4. 基礎となる 6 つのテーブルのクエリ
  5. 2 つの基になるテーブルのクエリ

最初のものは、このフォームで選択された条件を反映するプロパティを持ち、FROM 句と WHERE 句を記述するメソッドを持つクラス モジュールによって駆動されます。これにより、他のフィールドを非常に簡単に追加できます (それらのフィールドが、既に含まれているテーブル以外のテーブルから取得されていない場合に限ります)。

プロセスの最も複雑な部分は FROM 句を記述することです。これは、適切な結合タイプを用意し、SELECT 句または WHERE 句のいずれかにあるテーブルのみを含める必要があるためです。他のものを含めると、クエリが大幅に遅くなります (特に外部結合がある場合)。

しかし、これは大きなテーマであり、特効薬の解決策はありません。代わりに、このようなものを特定のアプリケーションごとに作成する必要があります。開発者であるあなたにとって完全に明確で理解できることは、エンドユーザーにとっては非常に不可解であることが多いため、ユーザーと一緒に徹底的にテストすることも重要です。

しかし、それは QBF だけに当てはまる原則ではありません。

于 2008-09-16T17:17:57.950 に答える
0

機能が非常に限られている場合や特殊化されている場合、SQL データベースはおそらくやり過ぎになるでしょう。たとえば、データのすべての組み合わせをローカルにキャッシュしたり、メモリにキャッシュしたり、フォームのチェックボックスに従って 1 つを表示したりします。以前は、テーブルからパーミッションを取り消して、所定の方法でデータを照会した VIEW/PROC にのみ許可することができましたが、MS Access 2007 からセキュリティが削除されたため、ユーザーが単純なアプリをバイパスするのを本当に止めることができます。 、Excel、および好きな方法でデータをクエリする...しかし、それがエンタープライズデータベースのポイントではありませんか? ;-)

于 2008-10-01T08:44:51.237 に答える