最近手っ取り早くデータを集計したい場合に最近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