- ベストアンサー
ACCESSで非連結のテキストボックスに値を出力するには?
ACCESSの初心者な者で大変困っています。 フォームで非連結のテキストボックスに、あるフィールドの値を条件にしてテキストに出力をするにはどうしたらよいでしょうか。モジュールで関数を作成しようと努力しましたがオーバーフロー的な状態になってしまいました。IF文はわかりますが出力するすべがわかりません。お願いします。 ちなみに条件が20以上あります。 例 ID 点検時間 10 200 10 500 20 500 IDが10のとき点検時間+150 IDが20のとき点検時間+200 等
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
VBAで作ることも、クエリで対応することも、フォームのつくりで入力することも、可能であると思います。 VBAにて作成したときに発生しうる問題は、新しく条件が追加された際にコードの変更を行う必要が出てくるということです。 それを行いたくないのであれば、条件をテーブルに入れてそれを読み出す物を作らなくてはいけません。 どうせ条件をテーブルに入れるなら、クエリで対応するほうが簡単だと思います。 まずもともとのテーブル(仮に名称を[T_Data]とさせていただきます)に 加算後点検時間、加算後購入日 のフィールドを追加しておいたほうが良いと思います。 それから、別に条件を入れたテーブル(仮に名称を[T_Kasan]とさせていただきます。)を作成します。 項目及び内容としては、 ID 加算時間 加算日数 10 150 0 20 200 1 30 0 2 のようなものでよいと思います。 一括で既存のデータを更新させるには、 更新クエリを一つ作り、[T_Data]to[T_Kasan]を表示させIDでリレーションシップで結び結合プロパティを「'T_Data'の全レコードと'T_Kasan'の同じ結合フィールドのレコードだけを含める。」とします。 更新する内容としては T_Data の [加算後点検時間]に[T_Data]![点検時間] + [T_kasan]![加算時間] [加算後購入日]に[T_Data]![購入日] + [T_kasan]![加算日数] としてクエリを実行させれば[加算後点検時間]、[加算後購入日]に加算されたデータが入力されます。 データ入力時に、同時に加算後のデータを更新するのであれば、上記クエリの選択版を作ります。(特に抽出条件は要りません。) このクエリをフォームのレコードソースとして、点検時間の更新後処理で、加算後点検時間を[T_Data]![点検時間] + [T_kasan]![加算時間]のような形で入力すればよいと思います。(購入日の加算も同じように行います。)
その他の回答 (2)
VBAで作ることも、クエリで対応することも、フォームのつくりで入力することも、可能であると思います。 VBAにて作成したときに発生しうる問題は、新しく条件が追加された際にコードの変更を行う必要が出てくるということです。 それを行いたくないのであれば、条件をテーブルに入れてそれを読み出す物を作らなくてはいけません。 どうせ条件をテーブルに入れるなら、クエリで対応するほうが簡単だと思います。 まずもともとのテーブル(仮に名称を[T_Data]とさせていただきます)に 加算後点検時間、加算後購入日 のフィールドを追加しておいたほうが良いと思います。 それから、別に条件を入れたテーブル(仮に名称を[T_Kasan]とさせていただきます。)を作成します。 項目及び内容としては、 ID 加算時間 加算日数 10 150 0 20 200 1 30 0 2 のようなものでよいと思います。 一括で既存のデータを更新させるには、 更新クエリを一つ作り、[T_Data]to[T_Kasan]を表示させIDでリレーションシップで結び結合プロパティを「'T_Data'の全レコードと'T_Kasan'の同じ結合フィールドのレコードだけを含める。」とします。 更新する内容としては T_Data の [加算後点検時間]に[T_Data]![点検時間] + [T_kasan]![加算時間] [加算後購入日]に[T_Data]![購入日] + [T_kasan]![加算日数] としてクエリを実行させれば[加算後点検時間]、[加算後購入日]に加算されたデータが入力されます。 データ入力時に、同時に加算後のデータを更新するのであれば、上記クエリの選択版を作ります。(特に抽出条件は要りません。) このクエリをフォームのレコードソースとして、点検時間の更新後処理で、加算後点検時間を[T_Data]![点検時間] + [T_kasan]![加算時間]のような形で入力すればよいと思います。(購入日の加算も同じように行います。)
どのようなフォームなのかもう少し情報をいただけますか? いっぺんにいくつのデータを表示させているのか、レコードソースはあるのかないのか? それによって、作り方が変わってきます。 もしもいっぺんに1レコード分のデータを表示させているなら、 ID と 加算時間 をテーブルにしてデータを入れておいて、あとはクエリをつくり合計時間を計算する。 そのクエリをレコードソースとしたフォームを作れば、非連結にする必要はないと思います。
補足
書き方がわかりにくく申し訳ありません。フォームは表形式のものです。またレポートでも出力したいと思っています。クエリーを作成すると考えたのですが分岐する条件が多すぎて難しいと判断しましたが大丈夫なのでしょうか? 具体的に書きますと ID 点検時間 購入日 時期点検日という4つのフィールドがあります。IDによって点検時間に時間を加算するものが15条件ぐらいと購入日に加算するものが5条件ほどあります。
お礼
更新クエリを使うという発想がもともと無かったのでとても参考になりました。丁寧な対応とてもありがとうございました。