2011-01-11 9 views
0

最終的には、フォームをフィルタリングできるようにすることです(フォームには、リフレッシュボタンもあります)。私にとって今はうまくいっていますが、以前はこのようなパラメータクエリの使用は見ていませんでした。私は他のメソッド(標準的な機能にアクセスし、Filter/FilterOnプロパティをvbaで使うこと)を使うことができるのは知っていますが、技術的には、これをしない理由がありますか?フォーム上のテキストボックスからパラメータを取得するクエリに基づくフォーム

答えて

0

私はあなたの質問を理解していませんが、フォーム上のフィルタ条件コントロールを参照するフォームのSQLをパラメータ化することは、データ以外のものを表示するためには、パラメータ化されたすべてのフィールドでフィルタリングされます。

再クエリーではなくレコードソースを作成していない限り、コントロール内の値に基づいてフォームをフィルタ処理するためにクエリーを実行する必要があるため、再クエリーはわかりません。フォームのレコードソースを変更している場合は、条件を入力するために使用されるフォームコントロールを参照するパラメータを使用する理由はありません。

フォームのFilterプロパティを設定するのがはるかに簡単な方法ですが、選択するすべてのレコードを表示するレコードソースを使用して開始したと想定しています。悪いデザイン。

基本的に私の推奨は、パラメータをまったく使用せず、動的にSQLを書いて、毎回フォームのレコードソースを設定することです。

括弧に挟ま、空白のフォームの表示を避けるために、あなたはこのようなTOP 1クエリのトリックを使用することができます。

SELECT TOP 1 Null As Field1, Null As Field2 
    FROM MySmallestTable 

あなたのため、すべての分野でのNULLを持つ一つのレコードを持っているでしょうバウンドコントロールはエラーメッセージを表示しません。また、フォームの編集プロパティを変更することなく、フォームを編集不能にします。

+0

このデータベースは、コースの対象となっていたもので、クラスでカバーされていた機能を制限していました。そうでなければ、あなたが言ったことを何度も繰り返しました。 –

0

まあ、私はあなたのフォームのバインドされていないテキストボックスに基づいてデータベースから再クエリにVBA関数を書くことができると思いますが、フィルタはパフォーマンス上の理由により適しています。あなたが再クエリーしたくないと思うかもしれないと思う唯一の理由は、多くの同時ユーザーがいる低速ネットワーク上のネットワークドライブ上のMDBファイルからたくさんのデータを取得している場合です。単にパフォーマンスが重大な打撃を受けるからです。私は間違っている可能性があります

関連する問題