• ベストアンサー

ACCESS 表形式フォームで1レコードずつ計算したい

こんなことを考えています。 氏名  生年月日 Aさん 1950/8/8 Bさん 1988/10/8  :    : このテーブルを表形式フォームでそのまま表示し、 各レコードの後ろに「年齢」という非連結フィールドを 作って、そこに人ごとの年齢を計算して入れたいのです。 この場合表形式フォームが妥当なのかどうかもわかりません。 ただ、年齢の計算はそのフォームを開いた日で計算するので、 テーブルに年齢というフィールドは作りたくありません。 どんな方法がありますか?

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

帳票形式のフォームをデザインビューで開き 年齢コントロールボックスのコントロールソースを =DateDiff("yyyy",[生年月日],Now())+(Format(Now(),"mmdd")<=Format([生年月日],"mmdd")) としてみて下さい。

nozomi300k
質問者

お礼

ご回答ありがとうございます。 確かにできるのですが、やりたかったのはテーブルを1レコードずつ ではなく、全レコード表示した状態でおのおの年齢を計算して表示 したかったのです。(表形式にしたのはそのせいもあります。) うまく伝わらなくて申し訳ございません。 他に方法はありますでしょうか?

その他の回答 (3)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

まず、No2において間違えてました。 帳票形式のデザインビューでコントロールソースをして置けば、データシートビューでも「年齢」は表示されますね (^_^;) ご質問者のおっしゃているのは単票形式でのことではないかと思うのですが? こちらの勘違いでしたらご容赦を願います。

nozomi300k
質問者

お礼

大変申し訳ございません。 NO.1のご回答でできることを確認しました。 私自身何か混乱しておりました。 さんざん踊らせてしまい、申し訳ございません。 ありがとうございました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

No1です ??? 帳票形式であれば全レコードで、それぞれの年齢が表示されますけど? データシートビューであれば、クエリにて 年齢:DateDiff("yyyy",[生年月日],Now())+(Format(Now(),"mmdd")<=Format([生年月日],"mmdd")) を追加してやる必要があるとは思いますが・・・ ???

nozomi300k
質問者

お礼

あれ?おかしいな・・・ 帳票形式では同時に1レコードしか表示されないと思うのですが・・・。 レコード移動させずに1画面ですべてのレコードを見たいのですが、 可能でしょうか?

noname#79209
noname#79209
回答No.2

クエリーで年令を計算するフィールドを追加して、このクエリーを フォームのレコードソースにするという手もあります。 Date系関数を使えば現時点(フォームを開いた日)での年令計算ができます。 #1さんの言われている、「フォーム上で計算させる方式」との違いは、 クエリーにしておくと「特定の年令の人を絞り込める」などでしょう。 ただ、年令の絞り込みなら生年月日を使っても出来ますから、あまり 意味がないかも...

nozomi300k
質問者

お礼

ご回答ありがとうございます。 クエリーですか。確かにそれならできそうな気がしますね。 ちょっと挑戦してみます。 ありがとうございました。

関連するQ&A