アプリ版:「スタンプのみでお礼する」機能のリリースについて

access 超初心者です。
フォームに2つのコンボボックス(COM_A,COM_B)があり
そのコンボボックスで条件を2つ設定し、テーブル(TBL)から
条件の一致したレコードを検索したいのですが、うまくいきません。
TBLのフィールド AAA ---> COM_Aで指定
BBB ---> COM_Bで指定

Dim db As DAO.Database
Dim TBL As DAO.Recordset

Set db = CurrentDb
Set TBLrs = db.OpenRecordset("TBL", dbOpenDynaset)

TBLrs.FindFirst"AAA='"&Me.COM_A&"'"And"BBB='"& Me.COM_B & "'"

If TBLrs.NoMatch Then
処理
Else
処理
End If

というコードなのですが、実行すると『型が一致しません』となってしまいます。

TBLrs.FindFirst"AAA='"&Me.COM_A&"'"
If TBLrs.NoMatch Then

とか
TBLrs.FindFirst"BBB='"&Me.COM_B&"'"
If TBLrs.NoMatch Then
 ~
のように条件を1つにすると各々問題なく動作します。
単純にAndでひっつけるだけではダメなのでしょうか?
いろいろ調べましたが、完全に行き詰ってしまいました。

ヒントでもいただければありがたいです。

よろしくお願いします。

A 回答 (1件)

>TBLrs.FindFirst"AAA='"&Me.COM_A&"'"And"BBB='"& Me.COM_B & "'"



恐らく『「And」は文字列として渡す必要があるから』と考えられて
「"And"」という形で挿入されたのだろうと思います。

確かにそう(=文字列として渡す必要がある)なのですが、そのためには、その前の
「AAA='」という文字列と、「Me.COM_B」というコンボボックスへの参照式とを
結合させた場合と同様に、「&」を使ってやる必要があります。

なお、文字列が連続する場合は、「"~"& "~"」とする代わりに、文字列全体を
一組の「""」で囲って「"~~"」とすることもできます。


ですので、上記の部分を
 TBLrs.FindFirst "AAA='" & Me.COM_A & "'" & " And " & "BBB='" & Me.COM_B & "'"
とするか、または連続する文字列をひとつにまとめて
 TBLrs.FindFirst "AAA='" & Me.COM_A & "' And BBB='" & Me.COM_B & "'"
と修正すれば、正しく動作するかと思います。
(「And」の前後には、ともに半角スペースが必要なので注意)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す