最終更新 2015年12月25日 (ACCESS Runtime 2010 Service Pack 2について追加)
開発環境としてACCESS 2000から、2010まで至り、細々とプログラムを開発してきた。
そうして開発したものはユーザー環境においてRuntimeで動作させる。
ACCESS 2010までなんとかやってきたのは良かったが、今までに経験しないエラーに見舞われ焦った。
開発したファイルが、開発環境と同じバージョンのACCESS 2010 Runtimeで開けないのだった。
だからと言ってACCESS 2010で変換したADEファイルは、ACCESS 2007 Runtimeでは開けなかった。
この一連の問題で気付いた点と対策のメモを残す。
最後のほうに対策とまとめ。
□ACCESS2000から2002を経て2003に至り、ADPファイルでVBAプログラム開発
かなり前にACCESS 2000でADPファイルでSQL SERVERと連動させたプログラムを開発した。
その後、開発環境は、ACCESS 2002を経て、ACCESS 2003になった。
ACCESS 2000では、予期せぬADPファイル破壊にたびたび見舞われていたからだ。
そうしてこの段階で、ADPファイルも2003形式に変換した。
さらに、安定動作を求めて、開発環境をACCESS 2010(32bit)に替えた。
ADPファイルの形式は、ここでも2003のままにしていた。
□ACCESS 2010で作成したADPファイルを、さらにADEに変換し、配布しようとしたが・・・
さて、こうしてACCESS 2010(32bit)で続けて開発したADPファイルを、
ADEファイルという配布用形式(ソースを見たり変更したり再開発が不可になる形式)に変換した。
これを、当然のようにそれまで使っていたACCESS 2007 Runtimeで動作させようとしたら、
次のエラーが発生して、終了。
”データベースの形式を認識できません( 後で気付いたが、ADPファイルは2003形式であっても、それをADE形式に変換すると、
データベースは使用しているバージョンよりも新しいバージョンで作成されています。
現在のバージョンにアップグレードしてからデータベースを開いてください。”
その変換を行ったACCESSのバージョンが継承されるということではないか。
ACCESS 2010で開発を続けていたもともとの2003形式ADPファイルは、ACCESS 2007 Runtimeで開けた。)
□ACCESS 2010 Runtimeで、ファイルを開くが重症そうなエラーが発生した・・・
どうしてもADEファイルで配布したかったので、このACCESS 2010で変換したADEファイルを、
開発環境と同じバージョンであるACCESS Runtime 2010で実行させると、次のエラーが生じた。
”指定した式に、Microsoft Accessが見つけることができない関数名が含まれています”そうして、「すべてのマクロを停止」というボタンしか押せない状態になって、次の情報が現れた。
・マクロ名 AutoExecそうして、強制終了される。
・アクション名 プロシージャの実行
・引数 main()
・エラー番号 2425
しかし、ACCESS 2010では正常に動作していたADEファイルだったのだ。それがACCESS 2010 Runtimeでは動作しなくなった。
ADPファイルの場合でも同じエラーが生じた。
この段階ではACCESS 2010 Runtimeを使うことはあきらめた。
□2010で開発していようとも2003形式のADPファイルなので、ACCESS 2003に戻してみた
最終的にどうしたか。
以下の作業では保存作業が伴う。
オリジナルファイルの場合、言うまでもなく、バックアップファイルを作成しオリジナルをキープしておく。
そうして、Access 2010で開発したそのADPファイル(2003形式)を、再びAccess 2003で開いた。
そこでsql server接続の設定もきちんと行って、接続も成功させた。
さらに、とりあえず修復処理をして、続けてADEに変換した。
もし、ADEファイルへの変換に失敗したら、「VBAコードのコンパイル作業」をACCESS VBAのメニューでまず行って、ファイルを「保存」しておく。
(
しかし、それでもACCESS2003において「ADEファイルを作成できませんでした」などとエラーが出る場合もあった。
このとき気づいたことは、すでに当該ADPファイルにおいてフォーム内の操作でイベント関係のエラーが発生していたことだった。
何かエラーがある場合、ADEに変換することができないようだ。
私の場合、ACCESS2003で開発してきたADPファイルにおいて、
既存フォームをコピー&ペーストして新しいフォームを作成した直後にこのエラーに遭遇した。
だから、コピー&ペーストして作成したフォームを全削除して、ACCESS2010を使って泣く泣く作成しなおした。
すると先ほどのフォームのイベントエラーは発生しなくなり、無事にADEファイルに変換することができるようになった。
)
こうしてようやく、ACCESS 2003で変換したADEファイルができた。
こうして作成したADEは、ACCESS 2007 Runtimeでも正常に開くことができました!
これで十分です。
中古価格 |
この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)
□まとめ
というわけなので、開発からユーザー配布までには次の手順を取らなければなりません。
ACCESS 2010で開発(2003形式ADPファイル) → ACCESS 2003で修復&VBAコンパイルして保存&ADE変換
そして、このADEファイルをACCESS Runtime 2007で動作させます。
この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)
□思うこと
ACCESS2000から始めてACCESS 2003に開発環境を移し、さらにACCESS2010で開発を継続してきた場合、ADPファイルの中で何かおかしなこと、不整合でも生じているのだと思う。
なぜなら、フォームをコピー&ペーストして別のフォームから新しいフォームを作成すると、
作成したフォームでイベント関係のエラーが発生するようになったからである。
最初はうまく動作していても時間を経てからエラーを出すようになるのだから曲者である。
もうフォームなどのコピー&ペーストはしない。安全指向でいこう。
あとまだもうちょっとACCESSでの開発が残っているんだ。
ACCESS 2013では、ADP形式がサポートされなくなってしまうようだ。
悩み多きACCESSを開発環境とするのは卒業して、明々白々なASP.NETに完全移行しようと思っている。
開発中にADPファイルが壊れるのもうんざりだし、今までのやり方が通じないなら、ACCESS VBAにこだわらない。
追申:
ACCESS 2003で変換したADEファイルは、2015年12月25日現在にダウンロード可能な、
Access 2010 Runtime 32bit でも、開くことができました。
Windows 10 Pro 64bit
またいつ、「開かない、動かない問題」に遭遇するか心配です。
ACCESS Runtime 2010 SP2は、いったいいつまでWindows 10でもサポートされるんだろうか。
持っている全てのパソコンのOSをWindows 10にアップグレードするかしまいか、迷っているところ。
ところで、ACCESS 2007 Runtimeの環境では、ネットワークのIPv6設定が有効化されていて、
グローバルIPv6アドレスが取得されている場合、IPv4環境のSQL Serverへアクセスできなかった。
Windowsのネットワーク設定から、IPv6設定を無効化することで正常につなげられた。