3

Accessアプリにデバッグできない癖があります。基本的に「完了」テーブルへの挿入と「保留中」テーブルからの削除を行うフォームがあります。デザインの好みはさておき、これは、ある種の「ステータス」列を持つのではなく、私がそれを行っている方法です。

私のコードを関連する行で要約します。

最初に完成したテーブルに挿入し、次に単純な削除を行います。

    qr = "DELETE * FROM tblPendingClasses WHERE ((tblPendingClasses.ID = " & curr         & "));" 'build the query
    Debug.Print qr
    MsgBox (qr)
    dbMine.Execute qr, dbFailOnExecute

     Form.Refresh 'refresh,requery
     Form.Requery
     MsgBox ("Class review complete.")
     docmd.close

クエリは、debugステートメントとmsgboxから正常に構築されますが、何も実行されません。保留中のクラスのテーブルを確認すると、削除しようとしているIDを持つクラスがそこに座っているだけです。意味のあるエラーはありません。これは以前は機能し、時々機能しますが、現在は機能していません。

アイデア?

4

1 に答える 1

4

モジュールに が含まれている場合、Option Explicit次の行に「変数が定義されていません」というコンパイル エラーが表示されます。

dbMine.Execute qr, dbFailOnExecute

おそらく、メソッドのオプションとしてではdbFailOnErrorなく、意図したものです。コード モジュールの Declarations セクションに追加して、存在しない定数の名前を使用しようとしたときに VBA コンパイラが警告するようにします ( )。次に、コンパイルして、コンパイラが不平を言うその他の問題を修正します。dbFailOnExecute.ExecuteOption ExplicitdbFailOnExecute

Database.Execute メソッドのヘルプ トピックでは次のように推奨されています: "
... Execute メソッドを使用して更新クエリまたは削除クエリを実行する場合は、常に dbFailOnError オプションを使用してください。影響を受けるものはロックされており、更新または削除できません。

そのdbFailOnExecuteため、予期した削除が行われなかった理由を説明する実行時エラー メッセージが表示されます。

SetWarningsこれらの変更を行っても、行が削除されず、エラー メッセージも表示されない場合は、電源がオフになっていないことを確認してください。

DoCmd.SetWarnings True
于 2013-01-02T19:26:28.987 に答える