• 締切済み

サブフォームのテキストボックスの表示が遅い

ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) サブフォームの詳細には[数量]、[単価]、[金額](タブオーダーもこの順番)があり、この[金額]の合計値が上記[合計金額s]に表示されます。 ただ一つ問題があり、[金額]でエンターを押した後[合計金額s]の内容が更新されるまで約1秒位かかります。 これの何が問題なのかと言うと、[金額]でエンターを押した後[F12]キーを押すことで入力したデータをテーブルに書き込んでいるのですが、メインフォームに[合計金額s]を参照しているコントロールがあり、[合計金額s]が更新される前に[F12]キーを押すと更新前の内容でデータに書き込まれてしまうのです。 今は[金額]でエンターを押し一息ついてから[F12]キーを押しています。 何か良い解決策が有りましたらご教示ください。

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

別に的ははずしてないと思いますよ。 そうならば、他の回答者がわんさかとやって 来ると思いますが。 [合計金額s]は、非連結のコントロールですから タイムラグが発生すれば質問のようになるのは 当然です。また、[合計金額s]は遅くなるのも 仕様ですからしかたの無いことです。 そのために、[合計金額s]を先読みすることに したのではないのですか。 諸般の事情でそれが使えないのならば、サブフォームの 表示レコードをRecordsetCloneを使ってデータを取得して、 ループ処理で合計を出すプロシージャをF12を押すときの イベントに組み込めば何も考えずにF12が押せます。 あるいは、テーブルの構造によってはSQL文で取得 できるかもしれません。当然ながら、F12を押すときは サブフォームがDirtyの状態ではなく、レコードが 確定した状態で押すことになりますが。 私の回答は以上です。

suteaddor
質問者

お礼

わざわざ有難うございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

http://okwave.jp/qa/q8984207.html http://okwave.jp/qa/q8988373.html の続きですかね。それとも・・・。 それで結局 >メインフォームに[合計金額s]を参照しているコントロールがあり は何のために存在するのですか? いずれにしても、回答がつかないのは、 1 そもそも合計をテーブルに書き込む必要があるか。  もし、数量、単価などが変更されたりしたら、当然ながら  合計金額も変更しなければなりません。そのときには  テーブルの合計金額の書き変えは面倒になります。  普通は必要がなければ合計金額はテーブルにデータを持つようなことは  しません。必要ならばクエリで注文番号をキーにして出せば済みます。 2 F12のようなキーを使っての操作は当然ながらOS側とAccess側の  挙動を十分に理解したうえで、コードの順序などを把握して  コードを書かないと思うようなことは実現できません。 3 >今は[金額]でエンターを押し一息ついてから[F12]キーを押しています  これならば、何もできない状態ではないので、それでいいのでは?・・という  ように考えられます。 そのようなことで、回答が付かないのだと思いますが、 >[金額]でエンターを押した後[F12]キーを押すことで入力したデータ >をテーブルに書き込んでいるのですが このときの、コードはどのようになっていますか?

suteaddor
質問者

補足

この質問の問題は[合計金額s]の表示が遅いと言う事です。 せっかく回答頂いて心苦しいのですが、1,2,3共に的を外しています。

関連するQ&A

  • サブフォームにあるテキストボックスの値を参照したい

    ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) この[合計金額s]の値を、メインフォームのコントロールソースがテーブルの項目に設定されているテキストボックス([金額])で参照したいのですが、金額入力直後の値が参照できません。 現在はメインフォームに中継用のテキストボックス([金額wk])を作成し、コントロールソースを[合計金額s]に設定、acNewRecする前に[金額wk]の値を[金額]へ渡しています。 何とか直接参照する方法はありませんでしょうか。

  • アクセスのサブフォームからメインフォームへキーで切り替えをする

    何度もお世話になっております。m(_ _)m アクセスのフォームで、サブフォームを作成しています。 EnterキーまたはTabキーで、フォームの中を進んでいくと、メインフォームのフィールドからサブフォームのフィールドへ進みます。 この進む順番は、タブオーダーで設定できるので問題ないのですが、 サブフォームの情報を入力し終えて、メインフォームへカーソルを飛ばしたい場合、どうすればいいのでしょうか? そのままEnterやTabを押しても、サブフォームの中の新規レコードが追加されるだけです。 自分でキーなどを設定できるのであれば、なおさら良いのですが・・・ とりあえず、基本的な操作方法として、サブフォームからメインフォームへ移るキーを教えてほしいです。 よろしくお願いします。

  • サブフォームをリクエリしたい

    メインフォームのコマンドボタンを押下するとvbaを使ってテーブルのデータを更新します。 メインフォームの中にはサブフォームがあり、 そのサブフォームとテーブルがリンクしています。 サブフォームにはテーブルのデータが表示されており、 メインフォームのコマンドボタン押下→テーブルデータ更新 がされると、全て#Deletedという文字が表示されます。 なので、 Private Sub cmd_データ更新_Click() Call データ更新 Me.Controls("Fサブ").Form.Requery End Sub としたのですが、 「実行時エラー’2465’:指定した式で参照されている’Fサブ’フィールドが見つかりません。」 が発生します。 Me.Controls("Fサブ").Requery これにしても同じでした。

  • 2つのサブフォーム間でデータの連携

    今、ある単票フォームに、2つのサブフォームを配置し、そのサブフォーム間で金額の連携をしたいと考えています。 【親フォームA】 ・ID1、長整数型(主きー) ・受付日時 ・発注金額総合計 <== ※Bが更新されたら、ここを更新したい 【サブフォームB】 ・ID2、長整数型(主キー) ・ID1(外部キー) ・発注日 ・発注合計金額 <=== ※Cが更新されたら、ここを更新したい ==> Aの更新へ↑ 【サブフォームC】 ・ID3、長整数型(主キー) ・ID2(外部キー) ・発注項目名 ・単価 ・数量 ==>ここを更新する→Bへ↑ ・単位 ==>ここを行進する→Bへ↑ ・摘要 サブフォームB、Cは、いずれも帳票型です。 それぞれ、テーブルA, B, Cがレコードソースで テーブル構成は、上の項目の構成と同じです。 A-ID1: B-ID1 = 1:多 B-ID2: C-ID2 = 1:多 この時、Cで単価と数量を入力したら、Bの発注合計金額の値を更新したいです。 それと同時に、親Form Aの「発注金額総合計」の値を、Bの全てのレコードの「発注合計金額」のSumで更新したいです。 よろしくお願いします。

  • サブフォームをリクエリするには?

    アクセスのフォームにはサブフォームがあり、 親フォームの上にあるコマンドボタンで、テーブルに対してアクションクエリでレコードの削除やレコードの更新を行います。 サブフォームにはそのテーブルをソースとしたデータを表示させているのですが、 親フォームの上にあるコマンドボタンのイベントの最後に、 Me.Controls("サブフォーム").Requery を入れても、フォームのデータが#Deletedになります。 Me.Requery でも、サブフォームのデータは#Deletedになってしまいます。 フォームを開きなおしたり、並べ替えをすればデータが表示されますが コマンドボタン押下後にイベントを実行し終わったら、サブフォームのデータも更新されたデータを表示するさせるには どうすればいいでしょうか?

  • ACCESS2000のメインフォームサブフォーム間の移動

    Access2000でメインフォームの中に詳細を確認/入力するためのサブフォームを作成しています。 メインフォームの中のコントロールを最後まで入力(enterで移動)していくと、メインフォームの最後のコントロールの次はサブフォームの最初のコントロールに移動します。(これは普通ですよね?) サブフォームはデータの詳細によっては1レコードで終わるものもありますし、複数レコードにわたるものもあります。 サブフォームの入力が終了したときに、キー操作でメインフォームの次のレコードの頭のコントロールに移動する事はできますか? マクロをAccessの方から設定するくらいならできるのですが、自分でSQLをうんぬんする知識はありません。 よい方法があったら教えてください。

  • アクセスのサブフォームからメインフォームヘEnterキーで移動したい!!

    アクセス2000でメインフォームにサブフォーム(クエリ)を埋め込みました。 メインフォームからEnterキーを押すと、 サブフォームにクエリーの結果が表示されます。 ところが、その後、いくらEnterキーを押してもカーソルがメインフォームへ戻りません・・・ 「マウスでクリックせずに、Enterキーでメインフォームへ戻りたい!!」 埋め込んだサブフォームのプロパティ・タブストップを「いいえ」にすると、 クエリーの結果は出てこない、どうしたらいいのでしょう。。。教えて下さい!!!!

  • アクセスのサブフォーム

    アクセス2000を使っているのですが、サブフォーム内に表示されている金額の合計をメインフォームに表示させる事は出来るでしょうか? またサブフォームを透明にして、メインフォームが透けて見えるようにはならないでしょうか? よろしくお願いします。

  • 親フォームとサブフォーム間の演算

    どうぞよろしくお願いします。 現在、テーブルに[決定金額_1],[受け日_1],[決定金額_2],[受け日_2],[決定金額_3],[受け日_3] というフィールドがあります。 上記テーブルを基にクエリを作成し、【決定金額合計:[決定金額_1]+[決定金額_2]+[決定金額_3]】 というフィールドを設けて決定金額の合計を算出し、フォームを作成します。 [決定金額・受け日]×3と[決定金額合計]のフィールドを持ったフォームに、[F請求状況]という サブフォーム(帳票フォーム)を埋め込みました。 この[F請求状況]は、[請求日],[請求金額],[請求内容]がありフォーム上で[請求金額合計]を 算出しています。(=SUM([請求金額]) これは、決定した金額に対して複数回(多いときは5回ほど)請求を分ける時があるので 帳票フォームにしました。 親フォームの[決定金額合計]からサブフォームの[請求金額合計]を差し引いて [請求過不足]というフィールドを計算させたいのですが、どのようにしたらよいのでしょうか? なにとぞよろしくお願いします。

  • クロス集計クエリの合計 テキストボックスに表示

    クロス集計クエリの合計と、フォームのテキストボックスに表示させたいのですが無理でしょうか? クロス集計クエリの行見出しには会社名A社B社が入っていて、 合計 金額フィールドには各会社の合計金額が入っています。 そのクロス集計クエリを元にサブフォームを作り、 親フォームにはめ込んだのですが その親フォームにテキストボックスを設置し、 クロス集計クエリの合計 金額フィールドの合計を表示させたいのですが サブフォームのレコードをクリックするたびに、 親フォームにテキストボックスに表示される値は、そのアクティブなレコードの値になってしまいます。 テキストボックスのコントロールソースは =[テーブル1のクロス集計のサブフォーム].[Form]![合計 金額] としています。 A社B社のそれぞれのクロス集計クエリを作成し、 それぞれを足すしか、テキストボックスに合計を表示させる方法はないでしょうか?

専門家に質問してみよう