- ベストアンサー
VBAでACCESSデータベースを操作する方法
- PowerPoint2007でVBAを学んでいる方におすすめのACCESS2007のデータベース操作方法です。
- VBAのコードで、ACCESS2007のデータベースに接続し、SQL文を実行して結果を取得する方法を解説します。
- TextBox1のテキストに、SQLで実行した結果を表示するための記述方法について説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考として、アクセスVBAでは 「社員2 クエリ」が正しく表示されるアクセスのクエリとして フォームにリストボックス(リスト0)とコマンドボタン(コマンド2)が貼り付けてあって Private Sub コマンド2_Click() Me.リスト0.RowSource = "社員2 クエリ" Me.リスト0.ColumnCount = 5 '列数 End Sub を入れておくと、ボタンをクリックすると「社員2 クエリ」の結果の明細が、リストボックスのアイテムに表示される。テスト済み。 アクセスではこのようにSQLの結果を指定するような仕組みも備わっている。 ーー そもそも、SQLの実行結果は、検索結果が複数ある場合も該当レコード全部を一体として表示されたりするものです。 ーー しかし世の中では、その結果についてレコードごとに処理したいニーズは多い。カーソル処理というニーズです。 http://msdn.microsoft.com/ja-jp/library/cc389735.aspx このニーズに対しては、SQLでADOを開くと、ADOがそれに相応しい働きをしてくれる。 逆にADOではリストボックスなどのアイテムの明細を1行ずつセットしないといけないということです。 私の場合は社員2という.mdbがあります。 質問のコードを使って Sub test16() Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset Dim connectionString As String '接続文字列の設定------------------------------------------------------ connectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\Documents and Settings\xxxx\xxxxxxx\社員2.mdb" con.connectionString = connectionString '接続 con.Open 'SQL文を実行(RecordSETで受け取ります)-------------------------------- Set rs = con.Execute("SELECT * FROM 社員2") rs.MoveFirst While Not rs.EOF MsgBox rs.Fields(1) rs.MoveNext Wend rs.Close con.Close Set rs = Nothing Set con = Nothing End Sub を実行する(テスト済み)と、氏名(私の場合、社員2のテーブルの社員2の場合Fields(1)は氏名)が表示されます。 これを質問者の場合に変えてやってみて納得してください。 ーー この先にやることは、テキストボックスの文字列TextBox1.Text を レコードのフィールドの値&復帰改行 で作ってください。 上記Msgboxの行が TextBox1=textBox1&rs.Fields(1)&vbCrLf になる。 テキストボックスのプロパティはマルチラインをTrueにしておく必要があると思います。 ーーー そのほかに、リストボックスのアイテムなどを、配列に値を入れて、その配列をRowSourceに指定する方法もあるようだが、略。
その他の回答 (1)
- 0909union
- ベストアンサー率39% (325/818)
>Set rs = con.Execute("SELECT * FROM table2") 良くわかりません。これは何かのサンプルを見て書いたと思いますが、そこに記述されていなかったのでしょうか? とりあえず、RSにセットされる物は、”レコードセット”です。この言葉がわかるような参考書を買ってよんでください。それでないと、だぶんわからないでしょう。と言うのも、ここまで記述して質問してくるという事は、RDBMSとOLE DBとADOがわからずに質問しています。 あなたがわからないといっている技術は「ADO」です。その参考書を買って、レコードセットの意味を勉強してください。 一応本家のリファレンスサイトを示します。英語サイトの方が本家なので詳細に説明があります。日本語では、ない物もあります。 http://msdn.microsoft.com/ja-jp/library/cc364264(v=MSDN.10).aspx http://msdn.microsoft.com/en-us/library/ee663264(v=VS.85).aspx
お礼
回答ありがとございます レコードセット=SQLで抽出した表と捉えていました。 一応ADOを使っているということは把握しております (でないと参照設定ができないので) HPは参考にさせていただきます。 ありがとうございました。
お礼
回答ありがとうございます。 問題が解決し、前に進めそうです。 改行しないといけないのはすっかり 忘れていました。細々としたご指摘 ありがとうございました。