- ベストアンサー
フォームの計算結果をテーブルへ
フォームの計算結果をテーブルに移行したいのですが、クエリーとマクロを使ったらその都度全計算してしまい時間がかかってしまします。又値の代入をしたら、少数点以下が切り捨てられてしまいした。何か良い方法はないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
テーブルの構造などがわかりませんが、あくまで例として、 テーブルに計算の答えを格納する項目を用意する。 例:A+B=Cの計算を行いたい場合、 計算TBL フィールド名 データ型 A 数値 B 数値 C 数値 フォームを作成 AとBの「プロパティ」→「イベント」→「更新後処理」の ”イベントプロシージャー”を作成 内容: C=A+B の1行追加・・・これだけ!計算の内容は、ご自由に これで、項目「C」に計算された値が格納されます。 注:この場合、「A」及び「B」の値が変更されないと「C」の値が 変更されないと言うこと それが、いやなら「コマンドボタン」を作成する事! 内容は上と同じ
その他の回答 (3)
- koutaka
- ベストアンサー率47% (18/38)
No.2 >プロシージャー書いたのですが、デバッグしてしまいできません。 >値の代入ができないとなってしまいました。 データ型を確認してみては? 1.値の代入ができない理由として、値のデータ型に代入する[フィールド]のデータ型が対応できないと考えられます。 例)数値型の[フィールド]にテキストを挿入している場合 2.テキスト型やメモ型など数値型以外のデータ型ではありませんか? >フォームはテーブルからウィザードで作っていいんですよね? 問題ないです。
お礼
でいました。フィールド名をMEにしたら動きました。こんなに簡単なんて・・・感激です。
- koutaka
- ベストアンサー率47% (18/38)
>クエリーは更新クエリーなのですが、入力したデータだけでなく >既に更新してある物まで計算しちゃうんです。 >データ量が少ない時はいいのですが増えてくると時間がかかりそうで。。。 ■リアルタイム処理 まず、テーブルに計算結果をテーブルに保存するかを検討してください。 保存する必要があれば、リアルタイム処理にしてはどうでしょうか?フォームを開いた時に計算しているようなので、入力時に"No.2 boya"さんが言うようにデータ入力後、値を計算すればいいでしょう。 ※この方法だと、すでに更新してあるデータを更新しないで済むでしょう。 ■作業時にしか計算ができない場合 またどうしても、フォームを開いた時に行わなければならない必要があるとき(現在時刻を元に計算など)の場合、計算結果をデータに保存する必要がなければ、フォーム上で[テキストボックス]等を作成して[コントロールソース]に計算式を入力すれば問題はないと思います。
- koutaka
- ベストアンサー率47% (18/38)
>フォームの計算結果をテーブルに移行したいのですが、 >クエリーとマクロを使ったらその都度全計算してしまい時間がかかってしまします。 どのような構成か分かりませんが、 ・フォームの計算結果とありますが、クエリで計算しているのでしょうか? ・また、一度表示したデータをフォームを開く度に再計算をする必要があるのか? ・一度、追加又は更新クエリでテーブルに追加又は更新してはどうか? ・再計算に時間がかかるのは、データの量が多いか、計算量が多い為だと思います。 >又値の代入をしたら、少数点以下が切り捨てられてしまいした。 >何か良い方法はないでしょうか? ・小数点が切り捨てられたのは、テーブルに追加した時でしょうか? ・[フィールド]の[データ型]は、"単精度浮動小数点型"又は"倍精度浮動小数点型"になっていますか?
お礼
ありがとうございます。データ型が長整数型でした。直したら少数点以下入りました。 クエリーは更新クエリーなのですが、入力したデータだけでなく既に更新してある物まで計算しちゃうんです。データ量が少ない時はいいのですが増えてくると時間がかかりそうで。。。
お礼
プロシージャー書いたのですが、デバッグしてしまいできません。値の代入ができないとなってしまいました。フォームはテーブルからウィザードで作っていいんですよね?初歩的な事ですみません。