• ベストアンサー

LIKEで検索

環境 プログラム VB  データベース ACCESS 例えば、年月日が平成14年01月01日~平成14年01月30日靴の売上が1万円以上 または 年月日が平成14年01月01日~平成14年01月30日の売上がスーツが5万円以上の名前が”わ”(頭文字だけ、あ、か等)の人の抽出をしたいのですが、自分が書いたソースを載せるのでご指摘をお願いします。 If IsNumeric(Text1.Text) Then king = CLng(Text1.Text) Else king = 0 End If If IsNumeric(Text10.Text) Then kking = CLng(Text10.Text) Else kking = 0 End If HstrSQL = "SELECT * From 売上 where 年月日 Between '" & MaskEdBox2.Text & "' and '" & MaskEdBox3.Text & "' and 靴 >= " & king & _ " OR 年月日 Between '" & MaskEdBox4.Text & "' and '" & MaskEdBox5.Text & "' and スーツ >= " & kking & _ "AND ふりがな LIKE '" & "[" & Text4.Text & "]" & "%" & "'"

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 ANDとORがたくさん出てくるので、()できちんと括らないとまずいことになりそうです。 "SELECT * FROM 売上 " & _ "WHERE (((年月日 BETWEEN '" & MaskEdBox2.Text & "' AND '" & MaskEdBox3.Text & "')" & _ " AND 靴 >= " & king & ")" & _ " OR ((年月日 BETWEEN '" & MaskEdBox4.Text & "' AND '" & MaskEdBox5.Text & "')" & _ " AND スーツ >= " & kking & "))" & _ " AND (ふりがな LIKE '[" & Text4.Text & "]*')"

その他の回答 (3)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

基本的に、ORよりANDのほうが、優先順位が高い(+より*のほうが高いのと同じ。)ので、 SELECT * From 売上 where   ( 年月日 Between <始期> and <終期>    and 靴 >= <サイズ> ) OR   ( 年月日 Between <始期> and <終期>    and スーツ >= <サイズ>    AND ふりがな LIKE <ふりがな> ) ――になってしまいます。 SELECT * From 売上 where (   年月日 Between <始期> and <終期>   and 靴 >= <サイズ> OR   年月日 Between <始期> and <終期>   and スーツ >= <サイズ> ) AND ふりがな LIKE <ふりがな> ――みたいので、どうでしょう。 靴とスーツの<始期/終期>が一緒なら、 SELECT * From 売上 where   年月日 Between <始期> and <終期> AND ( 靴 >= <サイズ> or スーツ >= <サイズ> ) AND ふりがな LIKE <ふりがな>

回答No.2

ANDとORではANDの方が先に判定されてしまうので、 SELECT .... where (年月日 ... スーツ>=" & kking & ") AND ふりがな Like... にすればいいのではないでしょうか?

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

AND ふりがな LIKE '[" & Text4.Text & "]*'" とすれば、 [わ]たなべ みたいな人がひっかかるかと(Text4に「わ」と入れた場合)。

GERRARD
質問者

補足

HstrSQL = "SELECT * From 売上 where 年月日 Between '" & MaskEdBox2.Text & "' and '" & MaskEdBox3.Text & "' and 靴 >= " & king & _ " OR 年月日 Between '" & MaskEdBox4.Text & "' and '" & MaskEdBox5.Text & "' and スーツ >= " & kking & _ "AND ふりがな LIKE '" & "[" & Text4.Text & "]" & "%" & "'" 例えば、靴の'わ'だけを抽出する場合はなるんですけど(靴の場合は" OR 年月日 ~ kking & _ は削除)、靴とスーツを抽出対象にすると'わ'ではなくて全て(五十音)がでてしまうのですがどうしてなのかわからないのでアドバイスをお願いします。

関連するQ&A