![]() |
||||
Sub AddNewRecord() ' データベースとテーブルを定義します。 Dim MyDB As database, MyTable As recordset Set MyDB = _ dbengine.Workspaces(0).OpenDatabase("C:\Sample\NWIND.mdb") Set MyTable = MyDB.openrecordset("TestTable") With MyTable ' 新しいレコードを作成します。 .AddNew ' レコードのキーを設定します。 !Field1 = "ABCD" !Field2 = "XYZ" ' 変更内容を保存します。 .Update ' テーブルを閉じます。 .Close End With 'テーブルのデータをワークシートに書き込み追加されたことを確認します。 strQrytodo = _ "SELECT `TestTable`.`Field1` `TestTable`.`Field1` FROM " & _ "`D:\Sample\NWIND`.`TestTable` `TestTable`" Set MyRS = MyDB.openrecordset(strQrytodo) ThisWorkbook.Worksheets("sheet1").Activate For i = 0 To MyRS.Fields.Count - 1 ThisWorkbook.Worksheets("sheet1").Range("a1").Offset(0, i).Value _ = MyRS.Fields(i).Name Next ThisWorkbook.Worksheets("sheet1").Range("a2").CopyFromRecordset MyRS ' データベースを閉じます。 MyDB.Close End Sub -------------------------------------------------------------------------------- < サンプル1 > 'レコードセットオブジェクト変数を作成します。 Sub DAO_Recordset() '変数の宣言 Dim constr As String Dim DB As database Dim RS As Recordset 'データベースの設定 constr = "ODBC;DSN=SQLSrv32;UID=DEMO;PWD=Password;DATABASE=pubs" Set DB = OpenDatabase(Name:="pubs", exclusive:=False, _ ReadOnly:=False, Connect:=constr) 'レコードセットオブジェクトの作成 If DB.Updatable = True Then Set RS = DB.OpenRecordset("TestTable", dbOpenDynaset) 'データを追加・更新・削除 If RS.Updatable = True Then With RS '追加 .AddNew !Field1 = 123 !Field2 = "abc" .Update .Close '更新 .Edit !Field1 = 456 .Update .Close '削除 .Delete End If End If End Sub < サンプル2 > 'SQL を実行し、実行結果をワークシートに表示します。 Sub DAO_Query() '変数の宣言 Dim DB As database Dim RS As Recordset Dim i As Integer Dim strQrytodo As String 'データベースの設定 constr = "ODBC;DSN=SQLSrv32;UID=DEMO;PWD=Password;DATABASE=pubs" Set DB = OpenDatabase(Name:="pubs", exclusive:=False, _ ReadOnly:=False, Connect:=constr) 'SQL の実行 strQrytodo = "SELECT * FROM TestTable" Set RS = DB.OpenRecordset(strQrytodo) 'SQL 実行結果をワークシートに表示 Worksheets("sheet1").Activate 'フィールド名をワークシートに表示 For i = 0 To RS.fields.Count - 1 Worksheets("sheet1").Range("a1").Offset(0, i).Value = _ RS.fields(i).Name Next 'データをワークシートに表示 ThisWorkbook.Worksheets("sheet1").Range("a2").CopyFromRecordset RS End Sub < サンプル3 > [参照設定] で[Microsoft DAO 3.6 ObjectLibrary] Dim MyDatabase As Database Set MyDatabase = Workspaces(0).OpenDatabase(App.Path & "\aaa.mdb") strSQL = "DELETE FROM tbl WHERE ENDYMD <= #" & strYMD & "#;" MyDatabase.Execute strSQL 'MyDatabase.RecordsAffected Set MyDatabase = Nothing |
||||