
この前から泥沼化している
Accessの呪いは進化して、「Returnに対応するGoSubがありません。」 は、何が原因で何に起因していたのかすら分からないまま、なぜか発生しなくなりました。
その代わり、今度は、「またはクラスがこのイベント セットをサポートしていません。」 が、突然発生するようになりました。
画像の例では、修正ボタンをクリックした時、このボタンのイベントプロパティとして、クリックした時、マクロを実行するようにしています。
マクロは、VBAをゴリゴリ書くのではなく、フォームの操作(開く、閉じる)と、クエリの実行を組み込んでいます。
このケースでは(規則性なく様々なイベントで無秩序に発生)、エラーメッセージのステップは条件判定です。
ワークのテーブルを削除(データクリア)して、画面(フォーム)から入力された値をフォームを閉じることで、基となるテーブル(この場合は、HOSTオンラインで使われているようなCOMMワークの発想を応用)に格納し、その値に一致するデータを抽出クエリ(追加)で、ワークテーブルに格納
抽出の有無の結果をCOMMワーク的なテーブルに格納し、COMMワーク的なテーブルを基とする隠しフォームを開いて、フォームの判定用のフラグをチェックすると言う簡単な流れです。
この判定箇所にケチがつけられたんですが、こんなの使い古した判定ロジックで何を今更…と言った感じです(苦笑)
しかも不思議なのは、このケースでは、新しいコマンドボタンを作って、そこにこの問題のマクロを仕込むと、正常に動くこと
Accessが閉じるまでは、問題なく稼働するのですが、一旦閉じて、再び開くと、また発生する
そして、何回か繰り返すうちに発生しなくなり、今度は別の場所で発生する(苦笑)
もっと不思議なのは、この問題の部分を古いAccessの形式で作った空のAccessファイルに移植すると正常に稼働すること
例えば、Office2003以前がインストールされていて、Office2007以降もインストールされ、複数の形式の異なるバージョンが混在していると、さまざまな問題が発生し、Microsoftとしても使用を控えて欲しい…となるわけですが、このケースでは、Office2010のみが存在する環境で発生するので、互換性の問題とは思えず、あと考えられるのは、2002-2003形式のファイル(.mdb)と、2007以降の形式のファイル(.accdb)が、同じClient PCの中にいるから?
でも、そんなことを言ったら、ファイル属性の新旧は、全て混在格納(マクロなんかで関連付けていないで、ただ単純HDD上にいるだけ)はできないことになる訳で、そんなバカな…と言う感じです。
Office2010(Access2010)のファイル形式(.accdb)でも散々作っていますが、本当、もうお手上げで、原因も分からず撤退するのは癪ですが、mdbの形式に移植して使うのが正しい気がしているところです(苦笑)
122714
ブログ一覧 |
コンピュータ関係 | パソコン/インターネット
Posted at
2017/03/17 02:19:38