• 締切済み

アクセスのフォームで

アクセスのフォームで、品番一覧というテーブルを基にした、F品番一覧というフォームがあります。 ヘッダー部に検索するコンボボックスがあり、品番一覧テーブルの品番を参照しています。 検索ボタンを押すと、コンボボックスの内容に当てはまるものが、フォームの詳細部に一覧として表示させる様にしたのですが、品番に"50#1"や"50#2"という#を使い、1と2を分けている物があるのですが、コンボボックスで、この#が付いた物で検索すると検索結果がなにも表示されません。#が付いていない物はちゃんと一覧が表示されます。 #が付いている場合でもちゃんと表示するにはどの様にしたら良いですか?テーブル側の#を取り除く事はできません。 検索ボタンのコードは Private Sub 検索_Click() Dim strFilter As String, strExp As String, aryOpe As Variant If Not IsNull(Me.txt氏名) Then strFilter = strFilter & " AND 品番 Like *" & Me.品番一覧 & "*" End If Me.Filter = Mid(strFilter, 5) If strFilter = "" Then Me.FilterOn = False Else Me.FilterOn = True End If となっています。 うまく説明できなくてすいませんが、誰か教えて頂けませんか? よろしくお願いします。 End Sub

みんなの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

「#」は、ワイルドカードで数字1文字を表します。 "50#2" だと "5002" ~ "5092" がヒットすることになります。 他のワイルドカード文字(*, ?)なども、その文字自体を表すには、 [  ] で囲みます。 " AND 品番 Like *" & Replace(Nz(Me.品番一覧,""),"#","[#]",,,vbBinaryCompare) & "*"

doradora64
質問者

補足

返事が遅くなってしまい申し訳ありません。 教えて頂いた様に Private Sub 検索_Click() Dim strFilter As String, strExp As String, aryOpe As Variant If Not IsNull(Me.コンボ1) Then strFilter = strFilter & " AND 品番 Like *" & Replace(Nz(コンボ1, ""), "#", "[#]", , , vbBinaryCompare) & "*" End If Me.Filter = Mid(strFilter, 5) If strFilter = "" Then Me.FilterOn = False Else Me.FilterOn = True End If End Sub 品番一覧の品番フィールドを参照したコンボ1の候補を選び、検索ボタンをクリックすると、 実行エラー3075 クエリ式'機械Like*1000[#]1*'の構文エラー:演算子がありません。 となってしまします。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Access2000ですが、当方も#では痛い目にあった事があって、使うのを止めた経験があります。 クエリであらためて試してみました。 「#hoge」(半角)といったデータがあるとき、 Like "#*" や、Like "\#*"等ではヒットしませんでした。 Like "#*"(シャープは全角)だとヒットしました。 ご参考まで。

関連するQ&A