- 締切済み
サブフォームのテキストボックスの表示が遅い
ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) サブフォームの詳細には[数量]、[単価]、[金額](タブオーダーもこの順番)があり、この[金額]の合計値が上記[合計金額s]に表示されます。 ただ一つ問題があり、[金額]でエンターを押した後[合計金額s]の内容が更新されるまで約1秒位かかります。 これの何が問題なのかと言うと、[金額]でエンターを押した後[F12]キーを押すことで入力したデータをテーブルに書き込んでいるのですが、メインフォームに[合計金額s]を参照しているコントロールがあり、[合計金額s]が更新される前に[F12]キーを押すと更新前の内容でデータに書き込まれてしまうのです。 今は[金額]でエンターを押し一息ついてから[F12]キーを押しています。 何か良い解決策が有りましたらご教示ください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
別に的ははずしてないと思いますよ。 そうならば、他の回答者がわんさかとやって 来ると思いますが。 [合計金額s]は、非連結のコントロールですから タイムラグが発生すれば質問のようになるのは 当然です。また、[合計金額s]は遅くなるのも 仕様ですからしかたの無いことです。 そのために、[合計金額s]を先読みすることに したのではないのですか。 諸般の事情でそれが使えないのならば、サブフォームの 表示レコードをRecordsetCloneを使ってデータを取得して、 ループ処理で合計を出すプロシージャをF12を押すときの イベントに組み込めば何も考えずにF12が押せます。 あるいは、テーブルの構造によってはSQL文で取得 できるかもしれません。当然ながら、F12を押すときは サブフォームがDirtyの状態ではなく、レコードが 確定した状態で押すことになりますが。 私の回答は以上です。
- piroin654
- ベストアンサー率75% (692/917)
http://okwave.jp/qa/q8984207.html http://okwave.jp/qa/q8988373.html の続きですかね。それとも・・・。 それで結局 >メインフォームに[合計金額s]を参照しているコントロールがあり は何のために存在するのですか? いずれにしても、回答がつかないのは、 1 そもそも合計をテーブルに書き込む必要があるか。 もし、数量、単価などが変更されたりしたら、当然ながら 合計金額も変更しなければなりません。そのときには テーブルの合計金額の書き変えは面倒になります。 普通は必要がなければ合計金額はテーブルにデータを持つようなことは しません。必要ならばクエリで注文番号をキーにして出せば済みます。 2 F12のようなキーを使っての操作は当然ながらOS側とAccess側の 挙動を十分に理解したうえで、コードの順序などを把握して コードを書かないと思うようなことは実現できません。 3 >今は[金額]でエンターを押し一息ついてから[F12]キーを押しています これならば、何もできない状態ではないので、それでいいのでは?・・という ように考えられます。 そのようなことで、回答が付かないのだと思いますが、 >[金額]でエンターを押した後[F12]キーを押すことで入力したデータ >をテーブルに書き込んでいるのですが このときの、コードはどのようになっていますか?
補足
この質問の問題は[合計金額s]の表示が遅いと言う事です。 せっかく回答頂いて心苦しいのですが、1,2,3共に的を外しています。
お礼
わざわざ有難うございました。