- ベストアンサー
ACCESSのテーブル設定について
私はアクセス2000を使っていますが、わからない事があるのでお願いします。 ACCESSのテーブルに、[誕生日]をフィールドに設定して、[年齢]を後から追加しました。クエリの演算フィールドで、例えば、 年齢:Year(date())-Year([誕生日]) とすると、年齢が求まるように、 テーブルにおいても、年齢フィールドにそのような計算の結果としての年齢を求めたいのです。 クエリでは演算フィールドに、クエリビルダーから計算式を使って年齢をもとめられるのですが、テーブルで年齢を求める場合のやり方がわかりません。 お分かりの方教えて下さい。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 質問が読み足りませんでした。テーブルに計算式は設定できないのですが、「計算の結果としての年齢」を入力すればよいのであれば、他の方がおっしゃるとおりフォームの更新後イベントや更新クエリを用いて代入すればよいです。 なお、老婆心ながら、年齢は誕生日の1日前で1つ増える、というのが案外知られていないので、数式を作る際は考慮して下さい。 つまり、4月1日生まれの人は3月31日に1才年を取ります。色々なソフトの「年齢関数」では、このあたりの配慮がなく単に年差を求めるだけの物が多いです。
その他の回答 (3)
- ja7awu
- ベストアンサー率62% (292/464)
一般的に、年齢などのように、いつでも計算式で算出できるものは、 テーブルのフィールドにデータとして保有する必要がないと思います。 事情があって、テーブルに[年齢]フィールドを追加した場合は、 「更新クエリ」を使用します。 その場合の年齢は、「更新クエリ」を実行した時点の年齢であり、 注意しないと間違いの元になります。 なお、ちょっと質問内容から外れますが、年齢を計算する式ですが、 西暦年を引いただけでは、正しく計算されないと思います。 普通、誕生日が未だの人は、1引きますよね。 ということで、 年齢: DateDiff("yyyy",[生年月日],Date())+(Format(Date(),"mmdd")<Format([生年月日],"mmdd")) のようにしたらどうでしょうか。
- non23
- ベストアンサー率36% (7/19)
そのデータはフォームから入力していますか?もしそうならば、フォーム上の[誕生日]テキストボックスのイベントの更新後処理[イベント プロシージャ]に次のように記述すれば、テーブルに直接データが入りますよ。 Private Sub 誕生日_AfterUpdate() 年齢 = Year(date())-Year([誕生日]) End Sub
お礼
お返事ありがとうございます。 今のデータはフォームからではなくて、あくまでもテーブルで[誕生日]を入力して、その結果として、年齢を表示しようとしています。 あの、分かりやすく言えば、テーブルやクエリやフォームで、ふりがなウィザードを使ってふりがなの自動入力を設定すると、ふりがなのフィールドに自動的にふりがなが入力されますよね。あれをテーブルにおいて、誕生日から年齢を導き出せる方法があるのならば、教えて欲しいと思ったのですよ。 今週末にMOUS一般ACCESS2000の試験があるので。 それにしてもイベントプロシージャとか勉強になりました。 ありがとうございました。
- coco1
- ベストアンサー率25% (323/1260)
ACCESSでは、テーブルには計算式を設定することはできません。 計算式を利用する場合は、クエリかフォームを利用することになります。
お礼
早速のお返事ありがとうございます。 すぐにお返事してもらえるととても助かります。 クエリでは出来たのですが、テーブルではどうも全くやりかたがどの参考書にも書いていないので、実際のところどうなのかと思ってました。 ありがとうございました。
お礼
クエリに関してと、式の変更に関してどうもありがとうございます。 これからしてみます。 早速のお返事ありがとうございました。