0

検索フォームであるフォームがあります。フォームには、フィールド名のドロップダウン リストと、検索キーワードを入力できるテキスト ボックスがあります。検索フィールド/値ごとに、ブール値 (and、or、not) のドロップダウン リストがあります。ユーザーが検索ボタンを押すと、選択によってクエリ文字列が生成され、実行されます。

Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string

DoCmd.Close acQuery, "temp_query"
DoCmd.OpenQuery "temp_query", acViewNormal, acReadOnly

SQL_query stringフィールド/値の組み合わせに基づいて生成されます。

上記のコードはtemp_query、 を実行する新しいクエリ を作成しますSQL_query string。新しいクエリ ペインを開くのではなく、フォームにクエリ結果をデータシート (テーブル) として表示したいと考えています。サブフォームが答えかもしれないと思ったのですが、データシート形式はないようです。どうすればいいですか?

これは最良の代替手段のようですが、実際のデータシートのように見える/動作するものが欲しいです。

ここに画像の説明を入力

4

1 に答える 1

0

あはは!正しい構文は次のとおりです。

Me.DatasheetView.Form.RecordSource = "temp_query"

を手に入れました!オンラインのどこかからですが、明らかにドットが正しい方法です。

これが私がしたことです:

私はすでにメインの検索フォームを持っていました (上の画像を参照)。DatasheetView という新しいフォームを作成しました。次に、(表示されるウィザードを使用して) 新しい DatasheetView フォームにリンクしたメイン検索フォームにサブフォームを追加しました。次に、ユーザーが [検索] ボタンをクリックすると、VBA コールバックが実行され、検索フォームの入力に基づいてクエリ文字列がまとめられます。クエリ文字列 (SQL_query_string) をつなぎ合わせると、次のようになります。

CurrentDb.QueryDefs("temp_query").SQL = SQL_query_string
Me.DatasheetView.Form.RecordSource = "temp_query"

生成された SQL で DatasheetView クエリを明示的に更新する必要があると思っていましたが、SQL を設定するだけで発生するようです。

基本的に、フォーム DatasheetView はダミー フォームとして機能し、サブフォーム以外では表示されません。

于 2014-09-16T20:23:11.757 に答える