Access VBA質問箱 IV

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

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


136 / 2272 ツリー ←次へ | 前へ→

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

【12884】「含む」検索について
質問  SS  - 15/9/16(水) 10:38 -

引用なし
パスワード
   質問失礼します。
現在フォームにてテキストボックスに入っている文字を含むものすべてを表示したいと思い作成中です。
しかし現在足踏み状態になっております。
問題のコードは以下になります。

Me.テキスト8 = IIf(IsNull([テキスト6]), "", DLookup("仕入先コード", "仕入先コードマスタ", "仕入先名 Like '*[テキスト6]*'"))

※検索したいのは仕入先コードや仕入先名、住所など複数項目あります。上記はその中の1つのコードです。

上記のコードだとテキスト6に入力したものを含む検索がしたいのですがまったくもって違うリストが出てしまうんです。しかも一件のみ。
例えば「吉」とテキスト6に入力したら「仕入先コードマスタ」(←クエリの名前です)の仕入先名の列に「吉」と入っているものすべてが抽出できるようにしたいのですがまったくもって関係のないものが抽出されます。しっかりと「含む検索」をするには上記のコードでは検索することはできないのでしょうか?
もし方法があるなら申し訳ございませんがご教授願います。

【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関数を使います。

【12886】Re:「含む」検索について
お礼  SS  - 15/9/17(木) 13:40 -

引用なし
パスワード
   ご返信ありがとうございます。
教えてもらったことで挑戦してみたいと思います。

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