VBScriptさんま屋.

VBScriptの個人的なメモです (´・ω・`)

Access形式データベースへの接続(4)レコードの登録と削除

概要

前回でテーブルに列を追加し、いわば入れ物が完成した。今回は中身となるデータを追加する。

レコードを追加する

下表に示した4件のレコードを追加したい。

原子番号 元素記号 元素名
1 H 水素
2 He ヘリウム
3 Li リチウム
4 Be ベリリウム

Dim rs
Dim query
Dim activeConnection
Dim cursorType
Dim lockType

Set rs  = CreateObject("ADODB.Recordset")

query = "elements" 'テーブル名
activeConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb;" '接続文字列
cursorType = 1 'adOpenKeyset
lockType   = 3 'adLockOptimistic

rs.Open query, activeConnection, cursorType, lockType 'レコードセットを開く

'1レコード目を追加
rs.AddNew()
rs.Fields("原子番号") = 1
rs.Fields("元素記号") = "H"
rs.Fields("元素名") = "水素"

'2レコード目を追加
rs.AddNew()
rs.Fields("原子番号") = 2
rs.Fields("元素記号") = "He"
rs.Fields("元素名") = "ヘリウム"

'3レコード目を追加
rs.AddNew()
rs.Fields("原子番号") = 3
rs.Fields("元素記号") = "Li"
rs.Fields("元素名") = "リチウム"

'4レコード目を追加
rs.AddNew()
rs.Fields("原子番号") = 4
rs.Fields("元素記号") = "Be"
rs.Fields("元素名") = "ベリリウム"

rs.Update 'データを更新する

rs.Close 'レコードセットを閉じる

全レコードを参照する

Dim rs
Dim query
Dim activeConnection
Dim cursorType
Dim lockType

Set rs  = CreateObject("ADODB.Recordset")

query = "elements" 'テーブル名
activeConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb;" '接続文字列
cursorType = 0 'adOpenForwardOnly
lockType   = 1 'adLockReadOnly

rs.Open query, activeConnection, cursorType, lockType 'レコードセットを開く

Dim buf
Dim fld

'見出し
For Each fld In rs.Fields
    buf = buf & fld.Name & ","
Next

buf = buf & vbCr

'全レコードの値
Do Until rs.EOF
    For Each fld In rs.Fields
        buf = buf & fld.Value & ","
    Next

    buf = buf & vbCr
    rs.MoveNext
Loop

rs.Close 'レコードセットを閉じる

Msgbox buf '結果を表示する

原子番号,元素記号,元素名,
1,H,水素,
2,He,ヘリウム,
3,Li,リチウム,
4,Be,ベリリウム

条件に合致するレコードを削除する

元素記号がHから始まるレコードを削除する。
SQLのWHERE句で条件を指定してレコードセットを開く。

Dim rs
Dim query
Dim activeConnection
Dim cursorType
Dim lockType

Set rs  = CreateObject("ADODB.Recordset")

query = "SELECT * FROM elements WHERE 元素記号 LIKE 'H%'" 'テーブル名
activeConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb;" '接続文字列
cursorType = 1 'adOpenKeyset
lockType   = 3 'adLockOptimistic

rs.Open query, activeConnection, cursorType, lockType 'レコードセットを開く

Do Until rs.EOF
    rs.Delete
    rs.MoveNext
Loop

rs.Close 'レコードセットを閉じる