- 締切済み
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を記述する方法が、わかりません
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ats8181oyaji
- ベストアンサー率38% (94/244)
連発で失礼します もしかしてSQL文に間違いがありませんか? SQL文をコピーして新規クエリーに貼り付けると 正しいかどうかテストできます うまくいかないソースコードも教えてください。 お願いします。
- ats8181oyaji
- ベストアンサー率38% (94/244)
前記のヘルプは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はエラーが発生すると更新をロールバックします。これも前述のヘルプを参照ください。
- ats8181oyaji
- ベストアンサー率38% (94/244)
こんにちは >直接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 にありますので見てね
補足
申し訳ありませんがExcute メソッドを参照しましたが いまいちうまくいきません、 できましたら、簡単にソースコードを記述してもらえると助かります やりたいことは1番の方法で やりたいですが