• ベストアンサー
  • 暇なときにでも

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

  • 質問No.894614
  • 閲覧数334
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 77% (170/219)

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

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 45% (207/457)

ワイルドカードを * では無く % を指定してみてください。
お礼コメント
tiga-

お礼率 77% (170/219)

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

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 28% (4498/16050)

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で表示されます。
お礼コメント
tiga-

お礼率 77% (170/219)

ありがとうございます。
URLのサイトを見ました。
なるほど、SQLでは%だったんですね。
私は、SQLをうまく作れないので、
クエリーのデザインで作ったやつを
コピーして加工してました。
なので、クエリーで動くのはSQLでも動くと思っていたのですが、
(実際、今までOKでした)
今回、ワイルドカードが使えなく、困ってしまったしだいです。
勉強になりました。
投稿日時:2004/06/17 07:03
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ