Access VBA質問箱 IV

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

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


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

【5570】複数条件を一つのコントロールに入れて検索 cya 05/7/7(木) 11:04 質問[未読]
【5571】Re:複数条件を一つのコントロールに入れて... 小僧 05/7/7(木) 11:46 回答[未読]
【5573】Re:複数条件を一つのコントロールに入れて... cya 05/7/7(木) 12:26 お礼[未読]
【5574】Re:複数条件を一つのコントロールに入れて... 小僧 05/7/7(木) 13:25 回答[未読]
【5575】Re:複数条件を一つのコントロールに入れて... cya 05/7/7(木) 13:51 お礼[未読]

【5570】複数条件を一つのコントロールに入れて検索
質問  cya  - 05/7/7(木) 11:04 -

引用なし
パスワード
   Access初心者です。
会社に寄せられた業務の質問−解答の内容の文章から、閲覧したい質問−解答を検索できるシステムをつくってます。2つのテキストボックスに入力した用語であいまい検索を行って抽出することはできたんですが、一つのテキストボックスに、検索wordをカンマで区切って入力していくようなことってできますか?たとえば、テキストボックスの中に、(お茶,コーヒー,コーラ)などのようにいれてそれぞれの用語が含まれる質問−解答を抽出したいということです。
まったくやり方が思いつかないので、具体的なことがご説明できなくてすいません。
ご教授おねがいします

【5571】Re:複数条件を一つのコントロールに入れて...
回答  小僧  - 05/7/7(木) 11:46 -

引用なし
パスワード
   ▼cya さん:
こんにちは。

カンマを区切り文字として Split関数で配列にして
「OR」条件で連結

すれば可能だと思われます。

フォーム上に

txt検索:テキストボックス
検索ボタン:コマンドボタン

を配置してイミディエトウィンドウで結果を確認してみて下さい。

Private Sub 検索ボタン_Click()
Dim Kensaku As String
Dim S As Variant
Dim I As Long
  If InStr(1, Me.txt検索.Value, ",") > 0 Then
    S = Split(Me.txt検索.Value, ",")
      For I = 0 To UBound(S, 1)
        Kensaku = Kensaku & "[質問] LIKE '*" & S(I) & "*' Or "
      Next
    Kensaku = Left(Kensaku, Len(Kensaku) - 3)
  Else
    Kensaku = "[質問] LIKE '*" & Me.txt検索.Value & "*'"
  End If
  
  Debug.Print Kensaku
End Sub

外していたらすみません。

【5573】Re:複数条件を一つのコントロールに入れて...
お礼  cya  - 05/7/7(木) 12:26 -

引用なし
パスワード
   小僧さんさっそくのレスありがとうございます!!
ばっちり検索できました。

ちなみにもう一つお尋ねしてもよろしいですか?
カンマは半角ではなく全角のままでも検索できるようにはできますか?
どのように書き換えればよろしいでしょうか?
書いたコードは以下の通りです。

Private Sub 検索btn_Click()
Dim Kensaku As String
Dim S As Variant
Dim I As Long
  If InStr(1, Me.txt検索.Value, ",") > 0 Then
    S = Split(Me.txt検索.Value, ",")
      For I = 0 To UBound(S, 1)
        Kensaku = Kensaku & "([質疑] And [解答] LIKE '*" & S(I) & "*') And "
      Next
    Kensaku = Left(Kensaku, Len(Kensaku) - 4)
  Else
    Kensaku = "[質疑] and [解答] LIKE '*" & Me.txt検索.Value & "*'"
  End If
    
  Me.Filter = Kensaku
  Me.FilterOn = True
 
End Sub

【5574】Re:複数条件を一つのコントロールに入れて...
回答  小僧  - 05/7/7(木) 13:25 -

引用なし
パスワード
   ▼cya さん:
こんにちは。

>「OR」条件で連結
「OR」条件でなくて「AND」条件でしたか。

>カンマは半角ではなく全角のままでも検索できるようにはできますか?

全角を半角にするには StrConv 関数を使います。
…がそのまま使うと検索する文字も半角になりますね…。
(カタカナや英字・数字の場合)

という事で置換でいきましょうか。

置換をするには Replace 関数を使います。

 StrConv(文字列, 検索文字, 置換文字)

こちらの環境ですと「,」は全角でも普通に検索できたので
「、」あたりを「,」に置換すれば使いやすい検索ツールになると思います。

【5575】Re:複数条件を一つのコントロールに入れて...
お礼  cya  - 05/7/7(木) 13:51 -

引用なし
パスワード
   なるほどー。
すごく検索しやすくなりました。
ご教授いただきありがとうございました!また、よろしくお願いします。

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