VBスクリプトからAccessデータベースを更新する方法

最近手っ取り早くデータを集計したい場合に最近Accessを使ってデータを整理しています。
マルチユーザな環境の場合、動作的に厳しい場合もありますが、大枠順調に動作しています。

実際のデータを取り込む場合には、Active Directory上のグループやアカウント、イベントログの取り込みの処理に利用する事が多いですが、今回は野菜とその値段を使った単純なサンプルです。

Accessデータベースファイル[hogehoge.accdb]をCドライブ直下に配置して、テーブル[野菜]に[品名]と[値段]というフィールドをどちらもテキスト型で作ってある前提です。

スクリプトを実行すると、[品名]のレコードに”大根”が無い場合には[野菜]フィールドに”大根”を追加し、[値段]フィールドに[450]を記録します。
スクリプトを再度実行すると、[品名]のレコードに”大根”があるので、今度は[値段]フィールドの値だけを[500]に変更します。

単純ですが、何かの値を自動的に取り込みたい場合には役に立つと思うので機会があれば是非お試しください。
Accessが使えるようになると、コンピュータやアカウントの管理が大分楽になります。

動作はAccess 2007とAccess 2010がインストールされたWindows XPで確認しています。

Const ForReading = 1
Const adLockOptimistic = 3

Dim objConnection
Dim objRecordSet
Dim adOpenStatic

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open"Provider = Microsoft.ACE.OLEDB.12.0; " & _
        "Data Source = c:\hogehoge.accdb"

objRecordSet.Open "SELECT * FROM 野菜 Where 品名=""大根""", _
    objConnection, adOpenStatic, adLockOptimistic

If objRecordSet.EOF Then
	'新規登録
	objRecordSet.AddNew
	objRecordSet("品名") = "大根"
	objRecordSet("値段") = 450
	objRecordSet.Update
Else
	'登録更新
	objRecordSet("値段") = 500
	objRecordSet.Update
End If

objRecordSet.Close
objConnection.Close

Set objConnection = Nothing
Set objRecordSet = Nothing

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です