- 締切済み
MS Access2007 フォーム作成で不思議な現象が起きて困っています
OS: WindowsXPSP3 Access2007:SP2 MSO(12.0 6425.1000) フォームのモジュールで Private 変数を宣言し、 フォームの開く時イベントで、値を代入するようにしました。 レコード移動時イベントでその変数を利用しようとしたら、 最初のレコード移動時にすでに値が空になってしまっているのです。 フォームを開いた時には、ちゃんと代入されています。 モジュール変数に値を代入しているのは、開く時だけです。 当然ながら、Option Explicit宣言をしてあります。 どうしてこんな現象が起きてしまったのでしょう? 解決に向けて、何をどう調べていったら良いのか、皆目見当がつかない状況に陥ってしまいました。 皆様のお知恵を是非お借りしたく、どうかよろしくお願いいたします。 ちなみに、Officeの診断プログラムは実行して問題のないことを確認済みです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yu_tang
- ベストアンサー率81% (26/32)
私は 2007 を使っていないので実地に確かめたわけではありませんが、 ちょっと調べた限りでは分割フォームのバグくさいですね。 同様の問題がいくつかのフォーラムで報告されています。 http://www.experts-exchange.com/Microsoft/Development/MS_Access/Access_Coding-Macros/Q_24670641.html http://bytes.com/topic/access/answers/735432-access-2007-split-forms-subforms どれも解決していません。また公開されている MS のバグリストにも (自分の探した限りでは) 見当たりません。 Access 2010 のベータ版でも同じ現象だという書き込みがあったところを 見ると、今のところ MS はこれをバグと見ていないか、またはバグだと しても優先度が非常に低い扱いではないかという推測ができそうです。 分割フォームと同等のフォームはサブフォームを使って簡単に自作できます から (2003 までは皆さんそうしていたはず)、従来の方法にするか、または バグが直るまで (バグだったとして、ですが) 待つかいずれかではないで しょうか。
- seastar3
- ベストアンサー率69% (99/142)
直感的なアドバイスですけど、そのフォーム上のフィールドに初期値指定してしまった可能性があります。プロパティーをよく見て、もしゼロか何か埋め込まれていたら削除すれば直るかもしれません。
お礼
Access側に問題がありそうなので、深追いせず、分割フォームの使用を避けることにしました。 ありがとうございました。
補足
ご回答ありがとうございます。 ご指摘の内容ですが、私の宣言したモジュール変数はユニークな名前なのでフィールドとの関連付けはありません。 それで、よくよく調べたら、フォームの既定のビューを分割フォームにしたせいだと分かりました。 単票フォームにすると問題なく変数の値が維持されています。 なぜ分割フォームにしていると、レコードを移動する際にフォームのモジュール変数が初期化してしまうのでしょうか? このあたりの仕組みが今一つ理解できないです。 なにかヒントがあれば、是非ご教授ください。 引き続き、よろしくお願いします。
お礼
なるほど、分割フォームの問題のようですね。 サイズ可変のデータシート表示が魅力で利用しようとしたのですが、避けておこうかと思います。 そろそろバグもフィックスしてきたころだろうと思い込んで、ACC2007に手を出したのが甘かったです。 闇雲なバージョンアップはせず、安定したソフトを常に選択するべきだと、痛感しました。 発売後3年も経つのに、これだけ明らかな不具合に対してコメントがないというのは、驚きです。 まったく、MOSのことしか考えないユーザ不在の企業倫理花盛り、と言ったところですね。 いろいろお調べいただいたようで、ありがとうございました。 貴重なお時間を割いてくださったことに感謝します。