web-dev-qa-db-ja.com

VBAモジュールを使用してAccessのフォームからテキスト値を取得する

現在、フォームから値を取得して、VBAを使用したAccessのモジュールで作成するSQLクエリに値を設定したいと考えています。使ってみた

value = Forms![NameOfForm]![NameOfTextbox] 

sqlquery = "...." & value & "....."

指定されたフォームが見つからないというエラー(2450)を出します。このテキストボックスの値を取得して、モジュールで使用するにはどうすればよいですか?

THX

9
helium1988

VBAコードを変更して、フォームが開いていることを確認します。

DoCmd.OpenForm "NameOfForm"

これにより、エラー#2450が防止されます。

その後、[NameOfTextbox]の値を変数に格納し、その変数を使用してSQLステートメントを作成する必要はありません。その値を直接使用できます。

sqlquery = "SELECT * FROM YourTable " & _
"WHERE some_field = '" & Forms![NameOfForm]![NameOfTextbox] & "';"

または、クエリに(テキストボックスの値ではなく)テキストボックス自体への参照を埋め込みます。

sqlquery = "SELECT * FROM YourTable " & _
"WHERE some_field = Forms![NameOfForm]![NameOfTextbox];"

Some_fieldはテキストデータタイプのフィールドであると想定したため、最初のクエリの例では、textbox値を単一引用符で囲みました。 2番目の例は、値ではなく名前でテキストボックスを参照しているため、引用符は必要ありません。

ただし、元のアプローチ(テキストボックスの値を変数に格納する)を続行する場合は、値に多くのオブジェクトのプロパティと混同される可能性があるため、変数に「値」という名前を付けないでください。

8
HansUp