ここのところAccess2007で作った販売管理プログラムの調子が悪く、直ぐ落ちてしまう。半年前にWindows7にしたのが悪かったのか、と思ったりしていたのだが、コンパイルしてみた。
(VBEで「デバッグ」「コンパイル」)
VBAはインタプリタなのでコンパイルって何をするのかというと、コードチェックをしてくれる。
フォームを新しく作る時、以前作った似たようなフォームを元にして修正することが多かった。不必要なコードも将来使うかもしれないので、とりあえず残しておく。コマンドボタンだけEnable=Falseにしておけば、そのコードは実行されることがないので、使う上では特に支障はない。と思っていた。
Accessのバージョンアップをする時はコンパイルが通る状態にしておかないとバージョンアップできなかった。実行されないコード中にスコープが通らない関数が定義されていたり、実際にないコントロール名を参照していたりすると、コンパイルできない。実際、そんな箇所はたくさん残っていた。
もしかするとこれが直ぐ落ちてしまう原因かと思い、修正。
修正後、落ちなくなった。
今後はプログラム作成終了時にとりあえずコンパイルしようと思う。
そんなことだったので、Accessのコンパイルについて調べてみた。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips13.htm
「コンパイル」を実行して保存すると、実行しない場合に比べてブックサイズが大きくなるという事は、
多くの人が気付いていると思います。大きくなった分は何か?という問いに対して、「Pコードというもの
を作っている」と聞いた人も居ると思います。実はこの『Pコード』がキーポイントなんです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これまでプログラムが大きくなる原因がわからなかったが、どうもコンパイルが通る状態だと大きくなるようだ。今回、コンパイルして140M程度のファイルが200Mになってしまった。しかも落ちない。
中途半端にコンパイルが終了してしまうので、不安定になっていたように思う。
逆にPCを変えて最適化を行うと、プログラムサイズが小さく場合があるのだが、『Pコード』が失われていたようだ。
プログラムに問題がなければ、全コードがコンパイルされるので、サイズが大きくなる。実行されない部分もコパイルするとなると、チャント書いておかなければ動作が不安定になってしまう。
Accessを使い初めて13年以上経つのだが、いつまで経っても使いこなせない。サンデープログラマーはつらい。
(VBEで「デバッグ」「コンパイル」)
VBAはインタプリタなのでコンパイルって何をするのかというと、コードチェックをしてくれる。
フォームを新しく作る時、以前作った似たようなフォームを元にして修正することが多かった。不必要なコードも将来使うかもしれないので、とりあえず残しておく。コマンドボタンだけEnable=Falseにしておけば、そのコードは実行されることがないので、使う上では特に支障はない。と思っていた。
Accessのバージョンアップをする時はコンパイルが通る状態にしておかないとバージョンアップできなかった。実行されないコード中にスコープが通らない関数が定義されていたり、実際にないコントロール名を参照していたりすると、コンパイルできない。実際、そんな箇所はたくさん残っていた。
もしかするとこれが直ぐ落ちてしまう原因かと思い、修正。
修正後、落ちなくなった。
今後はプログラム作成終了時にとりあえずコンパイルしようと思う。
そんなことだったので、Accessのコンパイルについて調べてみた。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips13.htm
「コンパイル」を実行して保存すると、実行しない場合に比べてブックサイズが大きくなるという事は、
多くの人が気付いていると思います。大きくなった分は何か?という問いに対して、「Pコードというもの
を作っている」と聞いた人も居ると思います。実はこの『Pコード』がキーポイントなんです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これまでプログラムが大きくなる原因がわからなかったが、どうもコンパイルが通る状態だと大きくなるようだ。今回、コンパイルして140M程度のファイルが200Mになってしまった。しかも落ちない。
中途半端にコンパイルが終了してしまうので、不安定になっていたように思う。
逆にPCを変えて最適化を行うと、プログラムサイズが小さく場合があるのだが、『Pコード』が失われていたようだ。
プログラムに問題がなければ、全コードがコンパイルされるので、サイズが大きくなる。実行されない部分もコパイルするとなると、チャント書いておかなければ動作が不安定になってしまう。
Accessを使い初めて13年以上経つのだが、いつまで経っても使いこなせない。サンデープログラマーはつらい。