アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/16 22:51

http://www.ipa.go.jp/security/awareness/vendor/p …
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で表示されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/17 07:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!