|
>Me.テキスト8 = IIf(IsNull([テキスト6]), "", DLookup("仕入先コード", "仕入先コードマスタ", ">仕入先名 Like '*[テキスト6]*'"))
>上記のコードだとテキスト6に入力したものを含む検索がしたいのですがまったくもって違うリスト>>が出てしまうんです。
たとえば、「テキスト6」に「吉」とだけ入力されていて、
「仕入先コードマスタ」クエリには次のようなレコードがあるとします。
仕入先コード 仕入先名
1001 株式会社吉田
1002 田中株式会社
1003 吉右衛門商店
1004 中西商事
この場合、上記DLookup関数は、「1001」又は「1003」を返します。
「1001」と「1003」のどちらが返るかは、偶然によって決まります。
なので、複数のレコードが抽出される場合に、DLookup関数を使うのは不適切です。
>しっかりと「含む検索」をするには上記のコードでは検索することはできないのでしょうか?
「しっかりと」という意味がよくわかりません。
その意味するところが、複数のレコードが返るようにしたい
ということだとすれば、クエリを使うか、レコードセットを使うかします。
ただ、クエリだと、クエリにおけるいずれかのセルの値を取得するということは
できないので、結局、レコードセットを使います。
上例において、「株式会社吉田,吉右衛門商店」という値を得たいのであれば、
仕入先名フィールドの値に「吉」の字を含むレコードセットを取得後に
次のコードを実行します。
そうすると、文字列型変数strRsltに「,株式会社吉田,吉右衛門商店」という文字列が格納されます。
なお、rsはレコードセットです。
Do Until rs.EOF = True
strRslt = strRslt & "," & Nz(rs!仕入先名.Value,"")
Loop
文字列先頭のカンマを取り除きたければ、ループ後にMid関数を使います。
|
|