Accessについてです。
フォームの「年齢」のコントロールソースに、年齢が自動計算できるよう
=DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
と入れましたが、フォームはきちんと自動計算されて年齢が表示されるのですが、テーブルには反映されません(コントロールソース「年齢」を選択しなければやはりなにも反映されないのでしょうか)
テーブルに反映させるにはどうしたらよいのでしょうか。
A 回答 (11件中1~10件)
- 最新から表示
- 回答順に表示
No.11
- 回答日時:
途中から失礼します。
『計算で求められるものはテーブルに保存しない』のが原則かと思います。
テーブルに保存した場合には現時点での年齢を求めるために
更新クエリを毎回行わねばなりません。
なので、
テーブルからは年齢フィールドは削除し、クエリに演算フィールドを設定します。
テーブル1が
ID オートナンバー型
氏名 テキスト型
生年月日 日付時刻型
・・・
のデザインで
ID 氏名 生年月日
1 ポチ 2006/04/01
2 トラ 2010/10/10
のようなデータが入っているとします。
クエリを新規作成して添付図のようにします。(読めるかな)
デザイングリッドの、年齢:DateDiff("yyyy",・・・・は画面スペース上途中で切れていますので
年齢: DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd"))
にします。
『才』を入れた状態にしたいのなら
年齢フィールドのどこかで右クリックしプロパティを表示させ
書式欄に、0\才
とします。
このクエリをフォームのレコードソースにしてください。
年齢フィールドは数値型のままなので右詰で表示されますし
抽出や平均年齢などの計算もやりやすくなるかと思います。
遅くなりましたが回答ありがとうございました。
クエリでもできましたがどうしてもテーブルに反映させたいのです。
年齢の更新後処理のイベントプロシージャで
Private Sub 生年月日_AfterUpdate()
年齢 = Year(date())-Year([生年月日])
End Sub
でテーブルにも反映させることができましたが
単純にいまの年2016から生まれ年を引いた数に
なってしまいます。。
No.10
- 回答日時:
遅くなりました。
ちょっとまとめますね。
年齢のコントロール名をtxt年齢、生年月日のコントロール名をtxt生年月日とします。どちらもテキストボックスです。
Private Sub txt生年月日_AfterUpdate()
txt年齢= DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
End Sub
これでいけると思うんだけど…
遅くなりましたが回答ありがとうございました。
年齢の更新後処理のイベントプロシージャで
Private Sub 生年月日_AfterUpdate()
年齢 = Year(date())-Year([生年月日])
End Sub
でテーブルにも反映させることができましたが
単純にいまの年2016から生まれ年を引いた数に
なってしまいます。。
No.9
- 回答日時:
No.7
- 回答日時:
あ、もしかして、フォームのプロパティ画面に貼り付けちゃいました?
もしそうなら、更新後処理のイベントプロシージャ内に記述してください。
アクセスをしばらく触ってないもので、細かいところは忘れてます…
回答ありがとうございます。
Private Sub 生年月日_AfterUpdate()
= DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
End Sub
ではおかしいですよね…TT
No.6
- 回答日時:
年齢コントロールの名前はそのまま(年齢)でいいですよ。
つまり、年齢コントロール名もコントロールソースも「年齢」と。(なんかややこしいですね。)こういう名前とフィールドの混同があるので、出来ればコントロール名はフィールドと同一にしないほうがいいんですよね。
出来ました?
スマホなんで、遅くてすいません。
回答ありがとうございます。こちらこそ何度もすみません。
年齢コントロール名もコントロールソースも「年齢」、
生年月日の更新後処理を=DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
にしましたが、できません。。
更新後処理のところはイベントプロシージャは使用しなくて良いのですよね?
No.5
- 回答日時:
であれば、生年月日のコントロールの中に「更新後イベント」があると思います。
そこに記述してください。
年齢コントロール名=年齢コントロールソースの計算式。
生年月日のコントロール名は[生年月日]となっていれば、そのままコピペでいけると思います。
カーソル移動時に反映されます。(たしか)
年齢コントロールのコントロールソースが、テーブルの年齢フィールドに設定されていれば反映されていると思います。
※もし反映されていない場合は、レコード移動時かもしれません。
回答ありがとうございます。
生年月日の「更新後処理」に=DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
年齢の「名前」にも=DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
年齢のコントロールソースは「年齢」にするということでしょうか。
何度も申し訳ないです。
No.3
- 回答日時:
ちなみに、「連結されている」とは、コントロールの値とテーブルの値が連動していて、かつ、フォームの方を変更するとテーブルも変更される状態のことを言います。
見た目が同じなんで、間違いやすいですけどね。
No.2
- 回答日時:
なるほど、分かりました。
まず、フォームの年齢テキストにはテーブルの生年月日を取得し、年齢を計算するという式が設定されています。これは連動はしますが、連結はされていません。
なので、そのフォームのどこかにテキストボックスを追加して、そのテキストのコントロールソースをテーブルの年齢と連結させてください。
コントロールソースに[年齢]でいけると思います。
よくある勘違いなんですが、フォームを自動生成すると、テーブルのフィールド名とテキストボックスの名前が同じになってしまうんで、連結している、と勘違いしてしまいます。実際は、コントロールソースの方が重要なんです。
で、その新しく作成したコントロールに年齢を手入力するとテーブルに反映されてると思います。
ここまで確認できたら、あとはどのタイミングで反映させるかだけです。
理解できました?
回答ありがとうございます。
実際にやってみて理解できましたが、フォームには年齢欄が2つになってしまうということですか?
>新しく作成したコントロールに年齢を手入力する
作業なくして実現するのは不可能なのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
アクセス2000/4月1日現在の年齢の計算方法を教えて下さい。
Access(アクセス)
-
アクセスである時点での年齢を計算する方法
Access(アクセス)
-
アクセス: フォーム上で計算した数字をテーブルに保存したい。
Access(アクセス)
-
-
4
フォームの計算がテーブルに反映するには?
その他(データベース)
-
5
Accessで勤続年数(○年○ヶ月)を表示する方法
その他(データベース)
-
6
Accessのフォームで計算した結果をテーブルに表示したい
Access(アクセス)
-
7
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
8
Accessというソフトで、生年月日の欄から「年末で30歳未満の人」を抽出したい場合、どのように表記
Access(アクセス)
-
9
フォームで入力しても反映されない
Access(アクセス)
-
10
Accessで生年月日から現在の年齢を求めるには?
Access(アクセス)
-
11
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
12
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
13
Accessでコードを入れると名前がでるようにしたい
Access(アクセス)
-
14
新規レコード行を非表示にしたい
Access(アクセス)
-
15
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
16
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
アクセスのフィールド表示を2段にする方法・抽出の方法
Access(アクセス)
-
19
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
20
ACCESSのフォームからデータの追加ができない
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
accessのレポートで元になるテ...
-
Accessのフィールド数が255しか...
-
ACCESS検索★ある文字を複数のフ...
-
ACCESS VBAにてCSV...
-
ACCESSDBで、NULLデータをすべ...
-
ACCESSで400以上のフィールドが...
-
主キーはオートナンバー型のID...
-
Accessでテーブルの値をテキス...
-
ACCESSでの改行コード
-
フィールド数の多すぎる・フィ...
-
ACCESSで和暦を西暦に・・・
-
ACCESSでテーブルのチェックを...
-
Access:リンクテーブルマネー...
-
Accessで、固定アルファベット+...
-
SQLで特定の文字を含むものを削除
-
ODBC--リンクテーブル'XXXX'で...
-
アクセス A列コピー B列貼り...
-
AccessVBA:TransferSpreadShee...
-
アクセスでオートナンバーをリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド数が255しか...
-
Accessでテーブルの値をテキス...
-
INSERT INTO ステートメントに...
-
ACCESSでの改行コード
-
ACCESSで400以上のフィールドが...
-
accessで重複を防ぎたい
-
アクセス エラーを数値「0」に...
-
Access 昇順・降順で並び替え...
-
accessのレポートで元になるテ...
-
ExcelのデータをコピーでACCESS...
-
アクセス VBAで列の入れ替...
-
SQLServer2005のSQL文での別名...
-
【Access】フォームで自動計算...
-
Accessで、固定アルファベット+...
-
主キーはオートナンバー型のID...
-
ファイルメーカーでCountifの様...
-
アクセス メモ型 255文字...
-
ACCESS 入力文字数制限
-
ACCESSで和暦を西暦に・・・
-
ACCESSでテーブルのチェックを...
おすすめ情報
初心者のためできれば具体的に詳しい手順を知りたいです。
単純に
年齢 = DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
で解決しました。ありがとうございました。
単純に
年齢 = DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
で解決しました。ありがとうございました。