• 締切済み

Access2000で・・・

Access2000でBtrieveファイル(PervasiveSQLV8)を更新するVBAを作成したのですが、コマンドボタンで実行し 処理をながすとエラーが発生します。 エラー個所を特定するためにステップイン等で実行すると、 エラーは発生せず正常に処理が終了します。 全ての関数にOnErrorGotoをつけてみたのですが、 そのエラーが発生するときは、なぜかOnErrorGotoにひっかかりません。 何かよい方法はありませんでしょうか?

みんなの回答

  • hisappy
  • ベストアンサー率46% (184/392)
回答No.1

Btrieveを使用したことがある者です。 10年近く昔の頃だということもあり、結構曲者でした。 さてさて、エラーメッセージがどのようなものか解れば もう少し深い推測もできますが、 ・ステップインではエラーは発生しない。 ・OnErrorGotoに引っかかってくれない。 という現状からですと 1.エラーの発生は処理速度と何らかの因果関係がある。 2.OnErrorGotoはエラー発生時のジャンプ先を宣言するだけであり、   飛んだ先に何も処理が無いので単純にスルーしている。可能性有り? のような材料が取り出せます。 でてくる推測は   「処理の実行速度が速すぎるため、Btrieve側の処理が追いつかない。    そのためVBAからの処理要求に対して『対応不能』の意味合いの    エラーを返している。」 というものです。  VBA側はシングルスレッドでもBtrieve側がマルチスレッドだと  発生しうります。  [VBA]オープンして [Btrieve]オープンするよ(と返事して、どっこいしょ・・・)  [VBA]じゃあ読んで [Btrieve]わぁ、まだ無理ぃ~~(エラーー!) みたいなイメージでしょうか。 この材料から導かれる解決手順は、 1.全てのOnErrorGotoで飛んだ先にデバッグ用のダイアログ表示をいれる。   エラーの発生場所を掴むのが目的なので、AだBだとユニークなものを   表示させるものでOK。 2.コンマンドボタンを押下することで通過する処理を全てコメントにする。   (なので、一番最初は押しても無反応な状態となる。) 3.コメントを少しずつ解除していきながら疑わしき場所を狭めていく。   (この時、ステップインで実行してはいけない。) 4.いざBtrieveが悲鳴をあげた時はOnErrorGotoが捕まえる   (1.でいれたダイアログが表示される)はずなので、   今度はその部分が影響しない範囲のコメントを解除していく。   そのためOnErrorGotoに関連するコーディングはしっかりしておくこと。 4-1.Btrieveの処理が影響してコメント解除しにくい場合は、    ・・・実行(F5?)とステップ実行(F8?)とブレークポイント(F9?)    を駆使して可能な限り捜索範囲を狭めていく。。。しかない。。。 5.実行速度だけの問題ならばSleepなどで対処する。   そうでないなら、、、さらに細かい情報を集めて    1・Btrieveのメーカーに問い合わせ。    2・改めてOKWeb(もしくは「教えてGoo」)する。    3・Btrieveの使用をあきらめる。    4・AccessからではなくVBからアクセスするようにする。   などなど でしょうか。 デバッグモードとリリースモードの違いではエリア破壊の微妙な影響が 質問のような動きの違いとなることもありますが、 はたしてVBAでそのような事が発生するかどうかまでは。。。 続報お待ちしております。

tomo0401
質問者

お礼

ご回答ありがとうございます。 なかなか奥の深い問題のようですね・・・ 今はちょっと時間がなくて調べられませんが、 時間があるときちょっと試してみようと思います。 詳しく回答して頂きましてありがとうございました。

関連するQ&A

  • 処理終了後に実行したmdbファイルが削除できない

    すいません。教えてください。 更新処理を行うmdbファイルを作成しました。 正常に処理が終了した場合、その実行したmdbファイルごと削除するようにしたいのですが、方法はありますか? ACCESS2003 VBAにて作成しいました。 よろしくお願いします。

  • Accessにてコマンドボタン時にエラー

    Access2003にてメインフォームに様々なボタンを作成し、処理を実行させようとしています。 「クリック時」イベントにマクロを指定する分には問題ないのですが、 コードを選択して実行させると 「イベント プロパティに指定した式 クリック時 でエラーが発生しました:Microsoft AccessがOLEサーバーまたは ActivXコントロールと通信している時にエラーが発生しました。」 の表示がでます。 一旦、コマンドボタンを削除して、1からやり直してみたのですが うまくいきません。 解決方法をご教授ください。

  • バッチファイルのコマンドでAccess2007のマクロを呼び出していま

    バッチファイルのコマンドでAccess2007のマクロを呼び出しています。  "C:\Program Files\Microsoft Office\Office12\Office12\MSACCESS.exe" "D:\XXX\PM.accdb" /x M_Create いくつかのQueryが正常に実行され、最後「終了~すべて保存」アクションを実行しようとするところ、エラーが発生してしまっています。  「コマンドまたはアクション”終了”は無効です。   *データベースが読み取り専用であるか、以前のバージョンの形式から変換されていません。   *アクションの対象となっているオブジェクトで現在選択されているものがないか、アクティブビューにありません。   このデータベースで現在使用可能なコマンドまたはマクロアクションを使うようにしてください。」 その代わりにVBAに「Quit」に追加してみましたが、まったく同じエラーが発生していました(エラー番号:2046)。 ファイルは確かに2002から変換されてきましたが、読み取り専用とかなっていません。 この不具合は何が原因でしょうか。 ご存知の方はぜひ教えてください。

  • エラーではないのにVBE画面が開いて中断される

    エラーメッセージが表示されないのに VBE画面に飛ぶことがあります。 他の人が作ったアクセスで、コマンドボタンを押すと、VBE画面が開き、途中でコードが止まります。 まるでその部分にブレークポイントがついてるかのようにVBAが中断されます。 しかし確認してもブレークポイントはついてないし、エラーも発生していません。 そのまま、F5キーでVBAの実行をすると問題なく動きます。 そして再度同じコマンドボタンを押してもエラーは発生しません。 mdbファイルを開いて1回目にコマンドボタンを押した時だけ発生します。 どういうことなのでしょうか?ヴァージョンは2003です。 よろしくお願い致します。

  • アクセス初心者です。

    アクセス初心者です。管理簿を作っています。フォームでの更新や削除などを「いいえ」にして、コマンドをクリックして初めて削除ができたり編集ができたりとしたいのですが、どのようなプログラムを書き込めばいいのでしょうか??コマンドボタンは、登録・削除・更新を作っています。 あと、アクセスの独学って厳しいものなのでしょうか?VBAは何から勉強していけばいいのでしょうか?また初心者向けのサイトで分かりやすいのはありますか?アクセスクラブは参考にしているのですが、私には分かりにくいです。よろしくお願いします。

  • ACCESS エラーメッセージ表示されない理由

    ACCESSのエラーメッセージ表示について教えてください。 ACCESS2000でマクロを作成しました。 あるデータを読み込み、テーブルへ反映させるマクロです。 マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。 ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。 どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます) フォームのボタンにマクロの実行を定義しただけなのですが。 VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName As String   stDocName = "マクロ名"   DoCmd.RunMacro stDocName Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub

  • アクセスのメニュー

    access2000ですが、書籍についてきたものをちょっとだけ手を加えたいのです。TOPメニュー(フォーム)にボタンを追加して、それをクリックしたときに特定の「更新クエリ」を実行する簡単な設定方法を教えていただけないでしょうか。このクエリはオブジェクト/クエリ/のところに最初から作成済みのクエリです。 #accessの知識はほとんどありません。 #VBAもいじったことがありません。 #TOPメニューへのボタンの追加はできます。

  • Access2000:コマンドボタンの不具合

    ウィザードで作成したコマンドボタンが、環境によっては下記のエラーメッセージが表示され機能しません。 ************ イベントプロパティに指定した式クリック時でエラーが発生しました:xxx(ファイル名)がOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました。 *マクロ名、ユーザー適宜関数名、[イベントプロシージャ]以外の式が指定されています。 *関数、イベント、マクロの評価でエラーが発生しました。 ************ ボタンは「フォームを開く」で特定のレコードのみ表示するように設定したものです。(ウィザードでできること以外は設定してありません) OS/Accessのバージョンが同じPCで開いても、一つは問題なく機能するが、もう一つは上記のエラーが出たりします。 今まで特に問題がなかった自分のPCもオフィスを再インストールしたところ、上記の状態になってしまいました。 ボタンを作り直しても同じ状況です。 コマンドボタン、ファイル、アクセス、PCのどの設定にどのような問題があるのか分かりましたら教えていただけないでしょうか。よろしくお願いいたします。

  • VBA ACCESS 更新 追加 find ADO テーブル

    いつもお世話になっております。 ACCESSのフォームに作成したコマンドボタンを実行すると 元テーブルから対象テーブルへIDを元に値を更新するようなプログラムを 作りたいと思います。 また、注意点として元テーブルでは「ID」、対象テーブルでは「管理番号」の異なる名称によりデータの管理を行っております。 アドバイスお願いします。 VBAの中でADO関数やFind関数を使ったら出来ると考えております。

  • アクセスのイベントプロシージャが実行できない

    他の人から作ったアクセスを実行する時、ログインフォームが立ち上げられたけど、ログインフォームにある「ログイン」ボタンを押しても、何の反応もなかったです。デバッグしてみようと思うが、VBAの「ログイン」ボタンをクリックする時の関数にブレークポイントを入れて、「ログイン」ボタンを押しても、この関数はまったく実行されないです。原因は思い当たらないです。 アクセスの初心者ですが、どの方がぜひ助けてください。

専門家に質問してみよう