Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


422 / 9994 ←次へ | 前へ→

【12885】Re:「含む」検索について
回答  かるびの E-MAIL  - 15/9/17(木) 0:16 -

引用なし
パスワード
   >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関数を使います。

246 hits

【12884】「含む」検索について SS 15/9/16(水) 10:38 質問[未読]
【12885】Re:「含む」検索について かるびの 15/9/17(木) 0:16 回答[未読]
【12886】Re:「含む」検索について SS 15/9/17(木) 13:40 お礼[未読]

422 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free