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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Excel(エクセル) 関数の質問です 3 2022/03/24 12:41
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- その他(パソコン・スマホ・電化製品) エクセル 平均年齢 4 2022/06/04 18:18
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
アクセス: フォーム上で計算した数字をテーブルに保存したい。
Access(アクセス)
-
アクセス2000/4月1日現在の年齢の計算方法を教えて下さい。
Access(アクセス)
-
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
-
4
フォームの計算がテーブルに反映するには?
その他(データベース)
-
5
アクセスである時点での年齢を計算する方法
Access(アクセス)
-
6
Accessのフォームで計算した結果をテーブルに表示したい
Access(アクセス)
-
7
Accessで勤続年数(○年○ヶ月)を表示する方法
その他(データベース)
-
8
Accessというソフトで、生年月日の欄から「年末で30歳未満の人」を抽出したい場合、どのように表記
Access(アクセス)
-
9
新規レコード行を非表示にしたい
Access(アクセス)
-
10
フォームで入力しても反映されない
Access(アクセス)
-
11
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
12
「年」と「月」だけの日付の表示方法
Excel(エクセル)
-
13
Accessで重複データを入力できないようにしたい。
PowerPoint(パワーポイント)
-
14
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
15
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
16
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
17
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
18
accessで重複を防ぎたい
Access(アクセス)
-
19
アクセスのフォームのビューが表示されないのですが、
その他(データベース)
-
20
access2013 フォームで計算した値をテーブルに代入したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
INSERT INTO ステートメントに...
-
SQLServer2005のSQL文での別名...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
ACCESSでテーブルのチェックを...
-
Access 昇順・降順で並び替え...
-
【Access】フォームで自動計算...
-
通貨型で\\0の時、何も表示しな...
-
Access:リンクテーブルマネー...
-
Accessで、固定アルファベット+...
-
アクセス エラーを数値「0」に...
-
ACCESS レーダーチャートのデー...
-
ACCESS2000「定義されているフ...
-
accessで重複を防ぎたい
-
SQLで特定の文字を含むものを削除
-
Accessで別途保存の画像ファイ...
-
ACCESSで400以上のフィールドが...
-
ACCESS VBAにてCSV...
-
Access の非連結テキストボック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
アクセス エラーを数値「0」に...
-
SQLServer2005のSQL文での別名...
-
accessのレポートで元になるテ...
-
ACCESSで400以上のフィールドが...
-
accessで重複を防ぎたい
-
Access 昇順・降順で並び替え...
-
Accessで、固定アルファベット+...
-
【Access】フォームで自動計算...
-
ExcelのデータをコピーでACCESS...
-
ACCESSでテーブルのチェックを...
-
ACCESS2000「定義されているフ...
-
ACCESS検索★ある文字を複数のフ...
-
ACCESS VBAにてCSV...
-
フィールド数の多すぎる・フィ...
-
ACCESSで和暦を西暦に・・・
-
アクセス メモ型 255文字...
おすすめ情報
初心者のためできれば具体的に詳しい手順を知りたいです。
単純に
年齢 = DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
で解決しました。ありがとうございました。
単純に
年齢 = DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "才"
で解決しました。ありがとうございました。