• ベストアンサー

Access2000 フォームで計算したものをテーブルに反映するには?

上司に頼まれ、Access2000で従業員データを作成しました。 そこで、フォームにおいて年齢を計算するために 「生年月日」を入力する欄と、「年齢」を表示する欄を作成して コントロールソースにも入れて、うまく表示できたのですが、 その年齢の数字が、テーブルやクエリで見ると表示されていません。 他の何かのデータを見た時にはできていたはず。。。 表示する為の手順が足りないのでしょうが、初心者ゆえにまったくしてわかりません、教えて下さい。 どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

三度、GreatDragon です。 ANo.1 の回答です。 テーブルの一括更新であれば、更新クエリが便利と思います。 作成手順は 1.更新したいテーブルを基に選択クエリを作成します。   この時、デザイングリッドには年齢だけを指定します。 2.クエリメニューから「更新」を選択し、レコードの更新セルに   年齢の計算式を入力して完成です。 (年齢計算式の例) DateDiff("yyyy",[生年月日],Now())+Int(Format(Now(),"mmdd")<Format([生年月日],"mmdd")) Now() の替わりに、今年または来年の4月1日を指定してください。

nyatomi
質問者

お礼

できました! 年齢: DateDiff("yyyy",[生年月日],Now())+Int(Format(2005/4/1,"mmdd")<Format([生年月日],"mmdd")) でしたね(^-^; 結局、クエリで式を入力して表示させました。 フォームにも連動して表示されています。 ありがとうございました。

nyatomi
質問者

補足

今年の4月1日を指定するとは、以下の文でしょうか? DateDiff("yyyy",[生年月日],2005/4/1)+Int(Format(2005/4/1,"mmdd")<Format([生年月日],"mmdd")) 年齢がマイナスになってしまいます。。。(>_<) 初心者ですみません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • arare2005
  • ベストアンサー率31% (63/199)
回答No.4

(補足です) 年齢(月なし)だけであれば GreatDragonさんの方法がシンプルで良いかと思います。 フォーム等に常に表示したいのであれば「クエリ」を使います。 (1)「クエリ」→「新規作成」→「デザインビュー」 (2)表示するテーブルを「追加」→「閉じる」 (3)テーブルの1番上の「*」をダブルクリック (4)その隣のフィールドにGreatDragonさんの計算式をそのままコピーして貼り付け 年齢式: DateDiff("yyyy",[生年月日],Now())+Int(Format(Now(),"mmdd")<Format([生年月日],"mmdd")) ※年齢式: は表示する項目名になります(重複しなければ何でも良いです) (5)表示のチェックBOXにチェックを入れます 以降、フォームに使用するテーブルは、このクエリを使用します。 これで、リアルタイムに年齢が表示される様になります(^^) 何歳何ヶ月まで求める事も出来ますが、この時はモジュールで計算式を入れた方が使い易いと思います。 関数だけでくっつけすぎると、見づらくなりますから(^^; 又、その様な事をされたいのであれば、又、ご質問して頂ければ...と思います。

nyatomi
質問者

お礼

ご回答ありがとうございました。 おっしゃるとおり、クエリで設定をしました。 ヒントを頂きありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

ANo.1 / GreatDragon です。 ANo.1 ではあのように記述しましたが、今後の参考になるよう回答します。 1.ツールのオプションから「名前の自動修正」のチェックを外しておきます。 2.フォームの演算フィールドの年齢のテキストボックス名を「Txt計算年齢」とします。 3.テーブルの年齢をフォームにテキストボックスコントロールで追加してください。   「可視」プロパティを「いいえ」にしテキストボックス名を「Txt年齢」とします。 4.フォームの更新前処理のビルドをクリックし下記のコードを貼り付けます。   Private Sub Form_BeforeUpdate(Cancel As Integer)       [Txt年齢] = [Txt計算年齢]  '←この行だけ貼り付けして下さい。   End Sub   以上でレコードの保存時に年齢の値も保存されるはずです。 よろしかったらお試しください。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

回答ではありませんが・・・ 「年齢」のようなデータは通常はテーブルに保存しません。 もし保存したら今度はその年齢を何度も更新する必要が出てくるはずです。 生年月日だけの保存でよろしいかと思います。 年齢を知りたくなったら、テーブルではなく年齢の計算式が設定された演算フィールドがある フォームで確認するのが良いでしょう。

nyatomi
質問者

お礼

ご回答ありがとうございます。 年齢は自動で更新はされていかないのですね。 そこで上司に確認したところ,4月1日現在でもいいんだけど,といわれました。 これならば年に一度の更新でよいですよね? もし方法がございましたら教えて下さい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームのテキストにテーブルの合計額を表示したい

    「T合計」テーブルの「数字」フィールドにいくつかのレコードに数字が入力されています。 このT合計の合計額をフォームのテキストボックスに表示させたいのですがうまくできません。 クエリ1を作成し、式1: Sum(T合計!数字)としたらうまく表示できました。 フォームのテキスト0のプロパティの「コントロールソース」に「=クエリ1!式1」としたら「#Name?」になってしまいます。 また、「コントロールソース」に「=Sum([T合計]![数字])」といれたら「#エラー」になってしまいます。 そもそも「コントロールソース」に入力することが間違えなのでしょうか? どうすればテキストボックスにT合計の合計額を表示することができるのでしょう? よろしくお願い致します。

  • ACCESSのテーブルとフォーム

    大変失礼ですが、いきなり質問です。よろしくお願いします。 テーブルに「受注データ」 フォームに「入力画面」というのを作ってあります。 そのフォームの一部に「商品金額」・「送料」・「消費税」・「合計金額」というテキストボックスがあります。それぞれのコントロールソースには単純にテーブルのデータを使うようにしてありますが・・・・・・「合計金額」のコントロールソースに「商品金額」・「送料」・「消費税」の合計を計算してくださいというような設定をしてしまったら、フォーム上ではしっかり計算をして表示してくれたのですが、テーブルの「合計金額」の列は空白になってしまいます。 テーブルの列が空白ではなく、フォームで表示されたその数値をテーブルの列に戻す?返す?という事を設定するにはどうしたら宜しいのでしょうか?是非ご教示下さいます様お願い申し上げます。ちなみにACCESS2000を使用しています。なぜかVBAの画面でヘルプを開こうとするとインストールされていないみたいで開かないんです。(←これ、余談です。すみません。)

  • フォームからテーブルへの保存

    Access2000を使っていますが、初心者です。 まず、フォームを作成し、コンボボックスでテーブル1からデータを取ってきて表示させています。そのコンボボックスに表示させているデータをテーブル2に保存したいのです。 コントロールソースで指定するとコンボボックスからテーブル1のデータを選択できません。これは何がおかしいのでしょうか。そもそもテーブル1のデータをフォームからテーブル2に保存するということはできないのでしょうか。保存させる方法がありましたら教えて頂けませんでしょうか。 困っております。できれば分かり易く教えて頂けないでしょうか。

  • Access2003 検索用フォームでの検索がうまくいかない

    Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • Accessのフォーム

    Access2003を使用しています。 テーブルまたはクエリを元に作成したフォームにはテーブル・クエリに入力されているデータが表示されますよね? それらのデータをフォームから変更出来ないようにする方法はありますか? データ自体を非表示(入力用フォーム)にするのではなく、既存のデータは表示されるけど変更は出来ないという状態にしたいです。 ちなみに新規入力は行えるようにしておきたいです。 よろしくお願いします。

  • MSアクセスでフォームからテーブル結合させたい

    製品マスタデータテーブルとオーダーテーブルがあります。 クエリで2つのテーブルを結合し表示させるのは簡単なのですが、 個々の注文データをフォームから作成するやり方がわかりません。 品番が共通項になっていて、フォームに品番を入力すると、製品マスターテーブルを参照して対応する品名や寸法を表示させたいのです。どこをどうすればよいのでしょうか?クエリにおける INNER JOINをイメージしています。 その後、その他もろもろの注文データに必要な項目を入力し、保存させればおしまいです。 クエリをベースにフォームを作成しましたが、それではフォームからの変更や追加ができません。 よろしくお願いします。

  • アクセス2003 計算結果を反映させたい

    当方:XPのoffice2003 です。 アクセスでデータを作っています。 商品名テーブルを作成し、クエリを介して フォームから入力できるようにしています。 たとえば、100g2000円の商品があったとして、 これをgごとに単価を出したいのですが、 (例でいうと、20 という答えを出したい) 本を読んで、フォーム上で自動計算させることは できるのですが、このフォームの数字を そのままテーブルに反映させることはできますか? 集計表を出すときに、クエリで集計表を出して印刷し、 資料にしています。 この集計表に、計算させた単価を表示させたいのですが・・・ 私のやりかたが間違ってるのか、 または違う方法でできるものがあるのか、 教えて頂きたいと思います。 説明不足の部分がありましたら、ご指摘下さい。 よろしくお願いします。

  • フォームの計算がテーブルに反映するには?

    Windows2000/ACCESS2000を使用してます。 フォームで自動的に合計や消費税が計算されるように設定しましたが、保存されたテーブルを見てみると合計や消費税は空白になっていて計算された値が入力されてませんでした。 フォームでの計算式は以下のように設定しました。 合計のフィールドを選んで、プロパティを開きその中のデータタブのコントロールソースに式ビルダーで、 =A+B と設定しました。フォーム上では計算されるの ですが・・・ どのようにしたらテーブルに計算された値が表示されるのでしょうか? 宜しくお願いします。

  • ACCESS2000 フォームとテーブル

    カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。

このQ&Aのポイント
  • ぷららからのメールが受信できなくなったのはなぜでしょうか?
  • ぷららのメールが受信できない問題について
  • ぷららのメールが受信できない理由と解決策
回答を見る

専門家に質問してみよう