フォーム内のコンボボックス処理について
現在ACCESS2002でDBを構築しております。
初心者です。
フォーム内でテキストボックスから値【a】をもらい、その【a】を抽出条件として抽出結果を
コンボボックスに表示したいと考えております。
※like関数を使用
Private Sub テキスト1_AfterUpdate()
DoCmd.Requery "コンボ1"
Me!テキスト1.Requery
End Sub
コンボボックスの値集合ソースの抽出条件で
((テーブル.カラム) like "'*" & Forms!フォーム!テキスト1 & "*'")
上記で指定したのですが、何も抽出されません。
イコールで下記を実行すると値は抽出されます。
((テーブル.カラム) = Forms!フォーム!テキスト1 )
LIKE関数の使い方が悪いのでしょうか。
お手数ですが、ご教授願います。
No.1ベストアンサー
- 回答日時:
【要旨】
値集合ソースやクエリのSQL文では、
((テーブル.カラム) like "'*" & Forms!フォーム!テキスト1 & "*'")
と、「'」は入れずに、
((テーブル.カラム) like "*" & Forms!フォーム!テキスト1 & "*")
としてください。
【詳細】
VBA上でSQL文を扱う場合や、DMaxなどの定義域集計関数の引数にする
場合は、確かに「*」と同時に「'」を使用しますが、クエリ(又は値集合ソースへの
直接入力)に使用する場合は「'」は使用せず「*」だけを指定します。
ちょっとわかりにくいかもしれませんが(汗)、完全一致の場合も、
((テーブル.カラム) = "'" & Forms!フォーム!テキスト1 & "'" )
ではなく
((テーブル.カラム) = Forms!フォーム!テキスト1 )
と、「'」を使用せずに指定しないと正しい結果が得られないのと同様と
考えて戴ければいいかと思います。
くどくなるのを承知で(汗)、さらに説明すると・・・
VBAでは、例えば「Me.氏名」に「鈴木」という値が入っていたとして、
strSQL = "Select * From テーブル1 Where 氏名 Like *" & Me.氏名 & "*;"
という変数への記録を行った場合、実際のWhere句は
氏名 Like *鈴木*
となって
氏名 Like "*鈴木*"
とはなってくれません。
(「*」がワイルドカード文字ではなく乗算の演算子として扱われてしまう、と)
これを防ぐため、VBA上でSQL文を扱う場合は、「'」を(又は「"」を重ねて)
使用する必要があります。
一方、クエリやSQL文を直接編集する場合は、
氏名 Like "*鈴木*"
とか
氏名 Like "*" & Forms!フォーム!テキスト1 & "*"
といったように、予め「*」を「"」で括って文字列(ワイルドカード文字)として
明示していることになります。
なので、逆にここに「'」を追加すると、その「'」まで「検索文字列」として
指定したことになってしまうので、意図した抽出結果が得られなくなる、
ということです。
・・・以上、長くなりましたが、参考まで。
なお、余談になりますが、この「Like」は「関数」ではなく「演算子」になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
UNIONする際、片方テーブルしか...
-
カラムをコピーして、新規カラ...
-
日付を一括UPDATE
-
SQLについて教えて下さい。 SEL...
-
構造が異なる二つのテーブルをu...
-
AES_ENCRYPTの利用
-
MySQLで論理名を取得する方法
-
コンボボックスの抽出条件のLik...
-
空文字のアップデート
-
ドロップダウンリストの連動し...
-
カラムとコラムの使い分け
-
MySQL(5.5)1テーブル内のカラ...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
SELECT文で、指定カラム以外の...
-
MySQLで複数のカラムの値を1増...
-
SQLで、行ごとのとある要素を比...
-
MySQLで先頭にカラムを追加
-
SQLServerでNULLを挿入したいです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
一部のカラムでdistinctし全て...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
now()かCURRENT_TIMESTAMPか
-
sql , insert で空行(全ての列...
-
AUTO_INCREMENTに0はダメ?
-
構造が異なる二つのテーブルをu...
-
カラムをコピーして、新規カラ...
-
ドロップダウンリストの連動し...
-
SQLでカラムを追加し、条件に合...
-
SQLで、行ごとのとある要素を比...
-
MySQLで論理名を取得する方法
-
MySQLで先頭にカラムを追加
-
日付を一括UPDATE
-
SQLについて教えて下さい。 SEL...
-
カラムとコラムの使い分け
-
文字列のカラムを数字と比較したい
-
ROUND関数で、四捨五入ができな...
おすすめ情報