< | >

ACCESS:フラグを消し去るVBA #3 Execute
  • (2010-02-18 05:12:23)
一発でフラグを消し去る書き方はないか?

上記の「Do Loop方式」はコードの記述が多いので、なんかこう一発でコードを書けるやり方はないかと探すと「Execute」と「DoComd.RunSQl」が使えそう。

「Execute」と「DoComd.RunSQl」の意味の違いは不明。勝手に推測すると

・「Execute」:Jetデータベースエンジンを外部プログラムから操作するためのオブジェクト体系であるDAO(*1)の中のコマンドの一つ。DAOはJetデータベースエンジン専用のオブジェクト体系で、JetデータベースエンジンとACCESSネイティブなコマンド体系?

・「DoComd.RunSQl」:「DoComd」シリーズはACCESS内に組み込まれているACCESSの操作を自動化するコマンド体系。ACCESSのマクロパートからマクロを作成しコード変換すると「DoComd○○」という形式になるものが多いことから、もともとACCESSの開発過程でマクロパートの部分用に独自に開発されたコード体系ではなかろうか。このコードをベースに逆にビジュアル化した部分がACCESSマクロではなかろうかと推測。もしそうならACCESS内のコードで、ACCESSネイティブだろうから処理スピードが速いのでは?(と予想したが実験ではそれほどでもなかった->後述)

(*1)DAO:Data Access Objects(DAO)。同じような操作ができるコマンド体系として他にActiveX Data Objects(ADO)が提供されている。ADOはODBC準拠とのこと。そのため他のデータベース製品操作も可能な点で汎用性が非常に高い。今後DAOに代わってACCESSの操作オブジェクトではADOが標準的なコマンド体系になる模様。

2)フラグを消し去る(DAO+Execute方式)

「Execute」を使用。

オブジェクトの宣言->オブジェクトのset->SQLの記述->DAOでExecuteメソッドの実行->オブジェクトのClose&解放。

Private Sub フラグクリア_Click()

Dim DB As Database

Dim SQL1 As String, SQL2 As String

Set DB = CurrentDb

'データ更新のためのSQL文(update テーブル名 set フィールド名 = 内容)とその実行(Execute)

SQL1 = "UPDATE [テーブル1] SET [フィールド1] = False, [フィールド2] = False"

SQL2 = "UPDATE [テーブル2] SET [フィールド3] = False, [フィールド4] = False"

DB.Execute (SQL1)

DB.Execute (SQL2)

DB.Close

Set DB = Nothing

End Sub

この記事は#3

ACCESS:フラグを消し去るVBA #5 スピード対決

ACCESS:フラグを消し去るVBA #4 DoCmd.RunSQL

ACCESS:フラグを消し去るVBA #3 Execute

ACCESS:フラグを消し去るVBA #2 Do Loop

ACCESS:フラグを消し去るVBA #1 消し忘れ






<< ACCESS:フラグを消し去るVBA #4 DoCmd.RunSQL< | >ACCESS:フラグを消し去るVBA #2 Do Loop >>
search
layout
admin

[▲page top]