No.2ベストアンサー
- 回答日時:
DoCmd.RunSQL ですが、「非同期」であると幾つかのHPで見かけましたが、実際試してみると「同期」実行している感じです(Access2000で実験)。
実際「非同期」なんでしょうか?
オフィシャルなサイトに「非同期である」と言う記述はありますか?
------------検証プログラム------------
Sub local_test()
Dim SQL(4) As String
Dim t As Double
SQL(1) = "UPDATE T1 SET Data = '0';"
SQL(2) = "UPDATE T1 SET Data = '1';"
SQL(3) = "UPDATE T2 SET Data = '0';"
SQL(4) = "UPDATE T2 SET Data = '1';"
'初期化
CurrentDb.Execute SQL(1)
CurrentDb.Execute SQL(3)
'DoCmd.RunSQL テスト--------------------------------------------
DoCmd.SetWarnings False
t = Timer()
DoCmd.RunSQL SQL(2)
Debug.Print "DoCmd.RunSQL " & Format(Timer() - t, "0.00000")
DoCmd.SetWarnings True
'DAO.Execute テスト--------------------------------------------
t = Timer()
CurrentDb.Execute SQL(4)
Debug.Print "CurrentDb.Execute " & Format(Timer() - t, "0.00000")
End Sub
---------------------------------------------------------
T1 T2 とも、3万件程度のテストデータが入っています。
DoCmd.RunSQL の方も処理が終わるまで返ってきません(同期実行では?)
DoCmd.RunSQL は SetWarnings を設定しないと、確認メッセージが出でます。
DoCmd.RunSQL が同期実行だとすると、これ以外に大きな違いは無いのかも知れませんね。
##########################################################
今度はADOを使って無理やり非同期実験
別のmdbにファイルにADOでアクセスしています。
------------検証プログラム------------
Sub ado_test()
Dim cnn(2) As New ADODB.Connection
Dim SQL(6) As String
Dim dbName As String
Dim t As Double
dbName = "c:\temp\db1.mdb"
SQL(1) = "UPDATE T1 SET Data = '0';"
SQL(2) = "UPDATE T1 SET Data = '1';"
SQL(3) = "UPDATE T1 SET Data = '2' WHERE Data = '1';"
SQL(4) = "UPDATE T2 SET Data = '0';"
SQL(5) = "UPDATE T2 SET Data = '1';"
SQL(6) = "UPDATE T2 SET Data = '2' WHERE Data = '1';"
cnn(1).Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbName & ";"
cnn(2).Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbName & ";"
'初期化
cnn(1).Execute SQL(1)
cnn(1).Execute SQL(4)
'同期実行テスト--------------------------------------------
t = Timer()
cnn(1).Execute SQL(2)
cnn(1).Execute SQL(3)
Debug.Print "同期実行 " & Format(Timer() - t, "0.00000")
'非同期実行テスト--------------------------------------------
t = Timer()
cnn(1).Execute SQL(5), , adAsyncExecute
cnn(2).Execute SQL(6), , adAsyncExecute
Debug.Print "非同期実行 " & Format(Timer() - t, "0.00000")
End Sub
---------------------------------------------------------
非同期の方が明らかに速いです。(処理を待たずに返ってくるので)
非同期の方は正しく更新できてません。
この検証プログラムが正しいのか?、あまり自信はありません(^^;
参考程度にして下さい。
##########################################################
補足
DAOかADOか?
http://www.naboki.net/access/heaven/heaven_14.html
http://homepage2.nifty.com/inform/vbdb/daoado.htm
No.3
- 回答日時:
> > 非同期であれば実行したクエリの内容が完結しないうちに次の SQL を実行しようとする
> 結果どのような問題が発生するのでしょうか?
実行した SQL が実際に DB エンジン側で処理完了する前に、プログラムの次のステップがすぐに実行されるとか。
No.1
- 回答日時:
Access 程度なら特に考慮しなくてもいいんじゃないでしょうかね。
非同期であれば実行したクエリの内容が完結しないうちに次の SQL を実行しようとするので、アクション クエリの実行に時間が掛かるのであれば同期タイプで行ったほうがいいかもしれないですけど。
というかいまどき DAO じゃなくて ADO でやれば?
どっちでも構わないけど。。。
この回答への補足
> 非同期であれば実行したクエリの内容が完結しないうちに次の SQL を実行しようとする
結果どのような問題が発生するのでしょうか?
お手数ですがご回答頂ければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 大学生です。自己剽窃について質問です。 同じ先生の授業を前期と後期にわたって受講しているのですが、前 1 2023/01/31 22:56
- ノートパソコン パソコン購入に必要なスペックを教えてください 8 2023/06/21 18:56
- Excel(エクセル) エクセルの複数条件作成方法について 2 2023/01/23 21:38
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- その他(学校・勉強) 質問のマルチポストの是非を問う数理的問題 1 2023/02/13 13:43
- デジタルカメラ Panasonic LUMIX GH6の今後について教えて下さい! 2 2023/05/10 07:46
- 事件・犯罪 刑法についてです 2 2022/06/04 03:11
- 大学受験 自己推薦書の添削や意見・アドバイスお願いします 2 2022/08/27 19:34
- 車検・修理・メンテナンス 車の車検の期日を過ぎてから無保険車状態を脱却するには? 12 2023/07/23 22:04
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
「RunSQL」と「Execute」の違い
Access(アクセス)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に
Access(アクセス)
-
-
4
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
5
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
6
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
7
dbFailOnError とは?
その他(データベース)
-
8
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
9
Accessで数値型にNULLをInsertするとエラー
その他(データベース)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
Accessのコマンドボタンの立体化について
Access(アクセス)
-
12
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
13
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
14
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
15
AccessのSQL文で1件のみヒットしたら終了させる構文。
その他(データベース)
-
16
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
17
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
18
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
19
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
20
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel-VBAの「しばらくお待ちく...
-
SQLサーバーのジョブでのexeフ...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
IDENTITY列を持つテーブルへBCP...
-
sqlcmdでクエリの実行結果をバ...
-
SQLServerのジョブからバッチを...
-
ユーザー定義関数内でのsp_exec...
-
100万件レコードdelete
-
accessでSQLをファイルから実行...
-
ACCESSのツールバー「フォーム...
-
SQL-Loaderが動かないです。
-
指定時刻のクエリ自動実行
-
ストアドの速度がクエリの30...
-
DTexec でSSISパッケージを実行...
-
.SQLファイルをvbaで実行
-
サーバーと実行端末が違う場合...
-
バッチでのSQL実行結果の分岐処...
-
ストアドプロシージャでcsvファ...
-
Oracle 8i コンマ(,)を含むデ...
-
バッチファイルからのBCP起動に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel-VBAの「しばらくお待ちく...
-
ユーザー定義関数内でのsp_exec...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
Excelフィルタ抽出で「検索して...
-
SQLCMDにて教えていただきたい...
-
サーバーと実行端末が違う場合...
-
バッチからメンテナンスプラン...
-
静的SQL、動的SQL?
-
アクションクエリが実行できない
-
sqlcmdでクエリの実行結果をバ...
-
【Oracle】ADOでSELECT * FROM ...
-
ストアドプロシージャでcsvファ...
-
UPDATE時のSETの実行順について
-
IDENTITY列を持つテーブルへBCP...
-
ストアドプロシージャーでバッ...
-
SQLServer2005のストプロでxp_c...
-
バッチからSQLCMDを実行する方法
-
SQL-Loaderが動かないです。
-
ストアドの速度がクエリの30...
-
SQLServerのジョブからバッチを...
おすすめ情報