2016-04-03 6 views
0

は、ここでは、コードです:VBA - ジェットSQL - 偽のエラーメッセージ

SQL = " DROP TABLE [H:\Archive23\SPX.accdb].[SPX_MissingTimes] " 
MsgBox SQL 
DoCmd.RunSQL SQL 

このコードでは、週のエラーメッセージを表示せずに走った、そして、それ以下の無関係なコードでいくつかの変更後に、それはこのメッセージを生成開始しました:

Microsoft Visual Basicの
実行時エラー '3295':DROP TABLEまたはDROP INDEXの中
構文エラー。

このエラーメッセージは、後でMsgBoxコールがエラーメッセージの前に実行されるという事実によって証明されたように、後でコードが実行された後に生成されます。

私はそれを「偽のエラーメッセージ」と呼んでいます。これはコードが動作しているため、毎回テーブルを削除するためです。
どのコードにも他のDROP文は含まれていません。

どこから探し始めるかわかりません。任意のアイデアをいただければ幸いです。

+1

'このエラーメッセージは、後のコードが実行された後に生成されます。つまり、後のMsgBoxコールがエラーメッセージより前に実行されることが証明されています。 ' - そのコードのMsgBoxを意味する場合、 'DoCmd.Run'の後にまだ別のMsgBoxがある場合、面白いでしょう。 – GSerg

+0

DROPステートメントを実行しているデータベースのローカルテーブルで、絶対ファイルパスを使用しているためです。そうでなければ、テーブルはドロップしようとするとどこにも使用できません。ストアドクエリウィンドウでDROPステートメントを使用するか、[DAOの実行](https://msdn.microsoft.com/en-us/library/office/ff197654.aspx)を使用して完全なエラーメッセージを表示してください。 – Parfait

答えて

0

GSerg、ありがとう。はい、それはエラーメッセージの前にポップアップするDoCmd.Executeの後にコード化された別のMsgBoxです。この2番目のmsgboxは、削除されたテーブルを置き換え、問題なく実行されるテーブル作成クエリのSQL文を表示します。私はおそらく言及すべきである:私はスタンドアロンインストール(Officeの残りの部分なし)でWindows 10とAccess 2016を使用しています。私は他の奇妙な問題はなかった。私はこれが何らかの形で内側のスレッディングロジックにアクセスすることに関連している疑いがあります。あるいは、アクセス "ゴースト"(これは私の最初のことではありません)です。これは、新しい空のデータベースを作成し、苦しんだものをすべてインポートすることで消去できますので、きれいにしてください。

+0

技術的には、これは答えではありません。あなたはコメントセクションでコメント投稿者に返信できることに注意してください。しかし、実際の答えにこのスペースを予約してください。 – Parfait