みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access2000のADOのレコードセットに先頭一致SQLを指定できない

お世話になっています。
さて、住所録があって、その住所の先頭と一致するレコードをSQLで抽出してその結果をレコードセットに代入したいのですが。
SQLは
"SELECT 住所録.住所 FROM 住所録 WHERE 住所録.住所 Like '" & str住所検索 & "*';"
というような感じです。(もうちょっといろいろあるけど)

それで、
rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText
rstはADOのレコードセットで、strSQLには上記のSQL文が代入されています。str住所検索には、検索したい住所の一部が代入されています。
これを実行すると、レコードセットにレコードが抽出されません。
WHERE句を
住所録.住所 = '" & str住所検索 & "';"
と完全一致にすると抽出します。
しかし、全部の住所が一致するレコードを集めたいわけではないので、これでは困ります。
ちなみに、クエリーで実行するとちゃんと集まります。
なんとか、レコードセットにあいまい検索の抽出結果を代入できないでしょうか?
ADOのレコードセットにはLike演算子は使えないのでしょうか?
よろしくお願いいたします。

投稿日時 - 2004-06-16 20:02:39

QNo.894614

暇なときに回答ください

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

ワイルドカードを * では無く % を指定してみてください。

投稿日時 - 2004-06-16 20:28:45

お礼

な、なんと!
抽出しました。
今までアスタリスクとかクエッションマークとかは知っていましたけど、パーセントもあるんですね。
勉強になりました。
ありがとうございます。
でも、あんまりにもあっさりの回答で、もう少し詳しく知りたい気もしますが、後で自分で調べて見ます。
とにかく、うまくいって、うれしいしだいです。
ありがとうございます。

投稿日時 - 2004-06-16 22:51:14

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01_main.html
http://www.ash.or.jp/db/sql.htm
をご参照。これらに書いてあり、また#1でご指摘のように%で旨く行く。
(例)住所録1
ID郵便番号県名住所氏名
12302345神奈川県横浜市山田
22311122埼玉県熊谷市宇野
32345555栃木県宇都宮市高松
43331111京都府京都市大川
52221111埼玉県川口市鈴木
64442222埼玉県川口市川村
72221111埼玉県蕨市近藤
84441111埼玉県さいたま市田中
96662222埼玉県南川口市小野
(コード)
Sub test05()
Dim conn As Connection
Dim rs As ADODB.Recordset
Dim strSql As String
Set conn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Source = "住所録1"
str住所検索 = "川口市"
'strSql = "SELECT 住所録1.住所 FROM 住所録1 WHERE 住所録1.住所 Like '" & str住所検索 _
'& "*';"
strSql = "SELECT 住所録1.住所 FROM 住所録1 WHERE 住所録1.住所 like '%" & str住所検索 & "';"
rs.Open strSql, CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do Until rs.EOF
MsgBox rs![住所].Value

rs.MoveNext
Loop
rs.Close
End Sub
を実行すると、
川口市
川口市
南川口市(現実にはこんな市はありませんが)
がMsgboxで表示されます。

投稿日時 - 2004-06-16 23:45:13

お礼

ありがとうございます。
URLのサイトを見ました。
なるほど、SQLでは%だったんですね。
私は、SQLをうまく作れないので、
クエリーのデザインで作ったやつを
コピーして加工してました。
なので、クエリーで動くのはSQLでも動くと思っていたのですが、
(実際、今までOKでした)
今回、ワイルドカードが使えなく、困ってしまったしだいです。
勉強になりました。

投稿日時 - 2004-06-17 07:03:41

あなたにオススメの質問