• ベストアンサー

AccessでSQL*PlusのようにSQLの結果を表示させたい

SQLでUPDATE, DELETE, INSERTのような結果セットを返さない場合は、 DoCmd.RunSQL?で済みますが、結果セットを返す場合は、どのようにすればよいのでしょうか? やりたいことは、AccessでSQL*Plusやpsqlのように抽出した結果を一覧に表示させるか、フォームに結果を表示させたいです。 テキストボックスに入力したSQLを クエリオブジェクト?(仮にクエリ1という名前にします)に書き込み それをフォームのRecordSourceにクエリ1をセットする方法が使えれば 単にRecordSourceにSQLを直接書くより早い気がするのですが、 皆さんはどのようにしていますか。

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

  • ベストアンサー
  • acyooooo
  • ベストアンサー率50% (1/2)
回答No.2

こんちにわ! こんな感じはいかがですか? public function test dim DB as DAO.Database dim RS as DAO.Recordset dim strSQL as string 'SQL文格納用 dim strWork as string 'レコード格納用 dim intcnt as integer 'フィールド数カウント用 set DB = CurrentDB  '適当にテーブル名や条件いれてください strSQL = "SELECT " & _ "* " & _ "FROM " & _ "テーブル名 " & _ "WHERE " & _ "条件;" set RS = DB.Recordset(strsql,dbopendynaset) '//レコードが終わるまでまわす do until rs.eof   '初期化 strWork = ""   '各フィールドの値をカンマで区切ります。最初の文字はカンマになってしまいますがゆるしてください。 for intcnt = 0 rs.recordcount - 1 strWork = strWork & "," & rs.fields(intcnt) next 'イミディエイトウィンドウに表示 debug.print strwork   '次のレコードへ rs.movenext   loop  DB.close:set db = nothing  RS.close:set rs = nothing end function これでイミディエイトウィンドウに表示されると思いますが、レコード数が多いと表示しきれないかも? そういうとき私は、クエリのSQLビューでSQL文作成してからプログラム組みます。 ※大文字、小文字の区別が・・・みにくかったらごめんなさい ※せっかくインデントつけたのに反映されないですね・・・

その他の回答 (1)

  • kosamon
  • ベストアンサー率47% (11/23)
回答No.1

こんばんは、まだ見ておられるでしょうか? 私は >SQL*Plusやpsqlのように ↑については明るくないのですが、 >皆さんはどのようにしていますか との事なので私のやり方を。 単に一覧のデータが欲しい場合や動作テスト時にはイミディエイトに Set dbs = CurrentDb strSQL = "ほにゃらら" Set rst = dbs.OpenRecordset(strSQL) Do Until rst.EOF Debug.Print rst!フィールド名その1,rst!フィールド名その2 rst.MoveNext Loop rst.Close 非連結表形式フォームに表示させたい時などは Me.RecordSource = "ほにゃらら" Me.フォームのコントロール1.ControlSource = "フィールド名その1" Me.フォームのコントロール2.ControlSource = "フィールド名その2" のような感じです。 >テキストボックスに入力したSQLを って事なら上記"ほにゃらら"の部分を変数で持たせてやればよろしいかと思います。 あくまでも私の場合と言うことで、参考になれば幸です。

関連するQ&A

専門家に質問してみよう