プロが教える店舗&オフィスのセキュリティ対策術

ACCESSで検索フォームを作りたいと思っています。
VBAを使って行きたいと思うのですが、うまくいきません。
希望としては、該当するレコードのデータを抽出したいです。
よろしくお願いいたします。

※現段階でのソースを書いてみました。
最終的に行いたい処理とは違うのですが、根本的に間違っているようなので簡略化しました。

/------------------------------------------------/
Private Sub コマンド1_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String

'接続
Set cn = CurrentProject.Connection

'レコードセットを取得
Set rs = New ADODB.Recordset
sql = "SELECT * FROM 従業員データ " & _
"WHERE 年齢=30"

rs.Open sql, cn, adOpenDynamic, adLockReadOnly

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
/------------------------------------------------/

A 回答 (2件)

再びmaruru01です。



レコードセットのOpenメソッドは、レコードセットが参照出来るようになるだけで、表示はしません。
表示する場合は、表示の方法でやり方が異なります。

抽出結果表示用のフォームを作る場合は、フォームのレコードソース(RecordSourceプロパティ)にsqlの内容を設定する。
または、SQLステートメントにINTO句を入れて、抽出結果テーブルを作成し、テーブルを開くか、そのテーブルを先ほどのフォームのレコードソースに設定する。
以上は、レコードセットの作成はしません。

もしくは、順番に抽出した結果を見ていくのであれば、今のようにレコードセットを作成し、

With rs
  Do Until .EOF
    MsgBox !従業員名
    .MoveNext
  Loop
End With

という風にする。
いずれにしろ、現状のコードでは結果は表示されません。
では。
    • good
    • 0
この回答へのお礼

意味が理解出来ました。
ご丁寧に有難うございました。

お礼日時:2002/02/28 12:43

こんにちは。

maruru01です。

書かれてある部分は、見たところ間違いはないようですが。
いったいどんな風にうまくいかないのでしょうか。
ここに書かれてある部分だけでエラーが出るのなら、ステップ実行してエラー個所を特定してみて下さい。

とりあえず、ものすごく基本的なこととして、
・ADOの参照設定はされているか。
・テーブル名(従業員データ)やフィールド名(年齢)のスペルミスはないか。
・[年齢]フィールドのデータ型は、数値型になっているか。
・その他単純なスペルミスはないか。
は大丈夫ですよね。

いずれにしろ、ステップ実行してエラー個所を探して教えて下さい。
では。

この回答への補足

早速の回答ありがとうございます。
エラーは出ないのですが、何も結果が表示されないんですよ。
処理は最後まで動いているみたいです。
SQLの結果で抽出されたレコードをみるにはどうしたらいいのでしょうか。
よろしくお願いいたします。

補足日時:2002/02/27 16:32
    • good
    • 0

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