過去の桐井戸端BBS (桐ver.8)
5307 年齢を例えば3歳10ケ月という風に月単位まで出すには 塚原 和幸 2000/03/26-03:18
1:項目に元号、生年、生月、生日、年齢を作っています。
2:年齢は自動計算する様にしています。
しかし、年齢は入力時のままで、月日の経過と共に、変わりません。そこで、お尋ねです。

1:年齢を例えば3歳10ケ月という風に、月単位まで出すにはどうしたらいいでしょうか?
現在は下の関数を使っていますが、2桁になると計算ミスの年齢になります。
年齢のデータ型は、数値にしています。

#四捨五入(#月数(#連結([元号],#文字列([生年]),"年",#文字列([生月]),"月",#
文字列([生日]),"日"),#年月日)/12,1)

2:1の年齢を毎月、例えばコマンドボタンで瞬時に変えるには、どうしたらいいでしょうか?
 これは全く分かりません。

どなたか、教えてください。宜しくお願いします
5308 Re: 倉 廣行 2000/03/26-11:06
記事番号5307へのコメント
塚原和幸さん、私の知りえる範囲でお答えしますね。

>項目に元号、生年、生月、生日、年齢を作っています。
桐V8でよろしいのでしょうか?
以下桐V8を前提に説明します。(Dos桐では多少変更が必要です。)

Win桐では日時関数が使えるので
日時の入力ミスを防ぐためにもご使用をお勧めします。
年、月、日ごと別の処理が必要でしたら、#部分列等で
後で別項目にもできます。

◆項目[年月日]データ型を日時で作成します。
(元号表示が必要でしたらば項目の表示条件で表示形式を変更します。)

◆年齢項目
項目[年齢]データ型:数値→項目計算式:#AGE([生年月日],#年月日)

◆月数項目
項目[月数]データ型:数値→項目計算式:#MOD(#月数([生年月日],#年月日),12)

年齢を○歳○ケ月といったようにひとつの項目で表示させたい場合は
◆年齢項目
項目[年齢]数値→#CAT(#文字列(#AGE([生年月日],#年月日)),"歳"\
,#文字列(#MOD(#月数([生年月日],#年月日),12)),"ケ月")
といったようにも出来ます。
5309 コマンドボタンでの再計算 倉 廣行 2000/03/26-11:14
記事番号5307へのコメント
塚原和幸さんへ

>年齢を毎月、例えばコマンドボタンで瞬時に変えるには
フォームでコマンドボタンを作成し、機能名:項目置換
機能パラメータリストで計算項目([年齢]等)を指定してください。
ボタンを押すと再計算が行われます。


5310 Re: 倉 廣行 2000/03/26-11:23
記事番号5308へのコメント
>年齢を○歳○ケ月といったようにひとつの項目で表示させたい場合は
>◆年齢項目
>項目[年齢]数値→#CAT(#文字列(#AGE([生年月日],#年月日)),"歳"\
>,#文字列(#MOD(#月数([生年月日],#年月日),12)),"ケ月")

項目のデータ型は文字列でした。

5315 年齢の表示は? 佐田 守弘 2000/03/26-23:30
記事番号5307へのコメント
塚原 和幸さん
年齢を表データとして持つ方法で考えておられる様ですが、年齢はその都度計算すればよいので、
表に項目値として持つ必要はありません。
そして、フォームやレポートには年齢を求める計算式を設定し、その都度年齢を計算します。

●年齢のデータ型
倉 廣行 さんも書かれている通り、桐ver.8であれば日時型で誕生日のデータを持つのが宜しいかと考えます。
その理由は1つの項目で日付を扱える事です。
参考までに他の方法と比較してみます。
@整数型で年、月、日の3項目にわけて持つ方法
誕生月や誕生日(年月日でなく日)で並べ替える時には便利です。しかし、日付(年月日)を求める計算が煩雑になります。
A文字列型で持つ場合
日付計算は簡単にできますが、日付の記述書式を統一しないと、並べ替えなどに不都合を生じます。

●年齢を求める計算式
倉 廣行さんが書かれている式とほぼ同じです。誕生日の項目名は、[誕生日]とします。
@年齢の年数
  #年齢([誕生日],#日時値)
  (注)#年月日は文字列型で、#日時値は日時型で現在日付(時刻)を返します。
A年齢の端数の月数
 #月数関数で誕生日からの月数を求め、12で割った剰余を取ればよいでしょう。
  #mod(#月数(([誕生日],#日時値),12)

●年齢表記の方法
「○歳△ヵ月」の様な表示や印刷をする場合でも、その様な文字列を作り出す必要はないでしょう。
○の部分には上記の年齢の年数、△の部分には年齢の端数の月数の計算式を設定し、「歳」と「ヵ月」はラベルで作成すれば良いでしょう。
もちろん、文字列型に変換してつなぎ合わせても構いません。

佐田守弘(KS-00119)


5320 年齢の表示(再お尋ね) 塚原 和幸 2000/03/27-04:10
お答え有難うございます。とても役にたちます。しかし、項目を既に分けているので、
まだ理解していません。恐れ入りますが再度のお尋ねです。

使用しているのは桐V8です。年齢は月単位まで必要です。印刷だけでなく、表示も
毎月必要だからです。(毎月、更新の必要があります)
使用用途(動物病院のカルテ管理に何才何ヶ月が必要です。薬の量との関係で)
現在、既に入力済データが1000以上あるので、元号、年、月、日、年齢と分けた項目を再度、
年月日に変更したくありません。

表の項目は以下のとおりです。
元号(文字列)、生年(整数)、生月(整数)生日(整数)年齢(数値)

1:このままの状態で、(項目名を変えないで、生年月日等に)年齢の項目に何才何ヶ月と
表示するには、どういう関数を使えばいいのでしょうか?恐れ入りますが宜しくお願いします。
4月から繁忙期に入りますのであせっています。

2:又、1:の結果から得た年齢を瞬時に変えるには、フォームにコマンドボタンを
作り、置き換えの「年齢」でいいのでしょうか?(すみません頭が悪くて)

お手数をおかけしますが、宜しくお願いします。

塚原 和幸

5324 Re:年齢の表示(再お尋ね) 倉 廣行 2000/03/27-11:01
記事番号5320へのコメント
塚原和幸さんへ

元号項目に"昭和","平成"が入っていると想定しての話ですが
年齢項目を文字列型に変更し、項目計算式に下記の式を入れると
年齢項目に○歳○ケ月と表示されるはずです。

注意:必ずもと表のバックアップをとってから行ってください。
   元号項目が"昭和","平成"以外は使えません。
   (計算式をデータに合わせれば可能ですが)

あまり、お勧めできる方法ではないので、時間に余裕がでたら
テーブル設計の見直しを行ったほうがよいと思います。

◆項目計算式
#CAT(#文字列(#AGE((#条件選択([元号]="昭和",#日時値(#CAT("S",#文字列
([生年]),"/",#文字列([生月]),"/",#文字列([生日]))),[元号]="平成",#日時値
(#CAT("H",#文字列([生年]),"/",#文字列([生月]),"/",#文字列([生日])))))
,#年月日)),"歳",#文字列(#MOD(#月数((#条件選択([元号]="昭和",#日時値(#CAT
("S",#文字列([生年]),"/",#文字列([生月]),"/",#文字列([生日]))),[元号]=
"平成",#日時値(#CAT("H",#文字列([生年]),"/",#文字列([生月]),"/",#文字列
([生日]))))),#年月日),12)),"ケ月")

5328 Re:年齢の表示(再お尋ね) 塚原 和幸 2000/03/28-02:07
記事番号5324へのコメント

倉さん、佐田さんへ
本当にありがとうございました。
確かに表の設計変更が必要ですね。よくわかりました。
5332 表の設計変更の指針 佐田 守弘 2000/03/28-18:16
記事番号5328へのコメント
塚原 和幸さん
表定義の見直しの必要性を理解された様ですので、どの様に作り替えるかの指針を作成中です。
この件に関し、私のサイトのQA集に近日中に掲載させて頂きます。

佐田守弘(KS-00119)

この記事は佐田守弘氏のHPによって詳しく説明されています。

戻る