• 締切済み

DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。

Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges)   このレコードセットは正常に行きますが   直接SQLを記述する方法が、わかりません   

みんなの回答

回答No.3

連発で失礼します もしかしてSQL文に間違いがありませんか? SQL文をコピーして新規クエリーに貼り付けると 正しいかどうかテストできます うまくいかないソースコードも教えてください。 お願いします。

回答No.2

前記のヘルプはVBの場合でした。すみません。 Access2000の場合はVBAのヘルプから 質問に"Execute"と入力。 下の一覧のExecuteメソッド(なぜか複数でる、ADOじゃないものの中の)以下の内容が書いてる説明を読んでください。 "指定した Connection オブジェクトや Database オブジェクトで、アクション クエリーまたは SQL ステートメントを実行します。" まず >Dim ws As DAO.Workspace, db As DAO.Database ここですが2行にしましょう。おまじないです。 Dim ws As DAO.Workspace Dim db As DAO.Database ... Dim strSQL As String '追加です ... Set db= ..... 'の後、削除の場合 strSQL="delete * from TWSQLK1 where キー=条件" 'UODATE,INSERTなどのSQL文は独学してくださいね。 db.Execute strSQL, dbFailOnError ※dbFailOnErrorはエラーが発生すると更新をロールバックします。これも前述のヘルプを参照ください。

回答No.1

こんにちは >直接SQLを記述する方法が、わかりません とのことですが? 1.直接UPDATEやINSERTをする方法という意味ですか? 2.それともレコードセットに対して更新ですか? 3.上記以外ですか? 1.ならdb.Executeというメソッドを使います。 詳しくはヘルプの"Execute メソッド"を参照ください 2.なら、 rs.edit(更新)またはrs.addnew(追加) rs.fields("項目名")=hogehoge rs.update という具合です。 詳しくはヘルプ(MSDNライブラリ)の Visual Basic ドキュメント +Microsoft DAO3.51 にありますので見てね

zazam4
質問者

補足

申し訳ありませんがExcute メソッドを参照しましたが いまいちうまくいきません、 できましたら、簡単にソースコードを記述してもらえると助かります やりたいことは1番の方法で やりたいですが

関連するQ&A