|
|
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
|
|