• ベストアンサー

ファイルメーカーで学年を表示させる方法

WindowsXP環境でファイルメーカー5.0jを使用しております。生年月日から年齢を求め、さらに年齢から学年(たとえば小3とか中1とか)を自動的に表示(計算)する方法がありますでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • himajin1
  • ベストアンサー率43% (184/422)
回答No.1

マック環境でファイルメーカープロ6.0jですが、同じに出来ると思います。 私の場合は、「ファイルを開いている今日」を判断基準点とせず、「任意で入力する基準日」に、何歳で何年なの?を計算させるようにしました。 たぶん、その方が小回りが利き、便利なので、その方法を紹介します。 次ようにフィールドを定義しました。 もっと簡単な方法が有るかもしれませんが、私は、これでやっています。 1:生年月日  :日付フィールド        2:基準日   :グローバルフィールド(日付)  3:年齢    :計算フィールド(数字、非保存)          = If(生年月日 <> "",Int((基準日 - 生年月日) / 365.2422),"") 4:基準日学年用:計算フィールド(日付、非保存)          = Date(4, 2, Year(基準日)) 5:早生まれ  :計算フィールド(テキスト、非保存)          = If(DayofYear(生年月日) <= DayofYear(Date(4, 1, Year(生年月日))),"早生まれ","") 6:学年基準日 :計算フィールド(日付、非保存)          = If(早生まれ = "早生まれ", Date(4, 2, Year(生年月日)-1), Date(4, 2, Year(生年月日))) 7:学年数字  :計算フィールド(数字、非保存)          = (基準日 - 学年基準日)/365.2422 8:学年    :計算フィールド(テキスト、非保存) = If(学年数字 < 7 , "幼" , If(学年数字 < 13 , "小" & NumToText(Int(学年数字)-6), If(学年数字 < 16 , "中" & NumToText(Int(学年数字)-12), If(学年数字 < 19 , "高" & NumToText(Int(学年数字)-15), "大人")))) 義務教育以降の味付けは、お好きに。(#^.^#)

yamashiro
質問者

お礼

ようやく完成しました。 感激です。 どうもありがとうございました。

その他の回答 (4)

  • aqula
  • ベストアンサー率60% (70/115)
回答No.5

◆満年齢の計算 満年齢の計算は2月29日生まれの処理によって 計算式が異なるんですが、2月28日の翌日に 年齢が増えるとして、 Year(Today) - Year(生年月日) - (Month(生年月日) * 100 + Day(生年月日) > Month(Today) * 100 + Day(Today)) ◆学年の計算 4月1日起算の年度の計算は Year(日付 + 275) - 1 うるう年を回避するため4月から12月の日数を 足して1引いています。 よって4月2日起算の学齢計算は生年月日の年度と 現在の年度の差をとって Year(Status(日付) + 274)-Year(生年月日 + 274) 計算式が長くなるのでこれを「学齢」という 計算フィールドにします。(フィールドタイプ数字) 学年(計算フィールド:テキスト)= Case((学齢 > 6) and (学齢 < 13),"小" & NumToText(学齢 - 6),(学齢 > 12) and (学齢 < 16),"中" & NumToText(学齢 - 12))

yamashiro
質問者

お礼

なるほど、計算式の意味を勉強すると意味が理解できました。 奥が深いですね。 いろんな方法で挑戦してみます。どうもありがとうございました。

  • ombre
  • ベストアンサー率43% (100/230)
回答No.4

No.3です。m(_"_)m > これで、本日の 小学生、中学生の学年が表示されるかと思います。 "本日の"ではなく "検索日の" の間違えです。 "検索日"に入力した日付の時点での学年を表示します。 Bodyに入れるフィールドは、表示したいフィールドだけです。

  • ombre
  • ベストアンサー率43% (100/230)
回答No.3

練習にやってみましたけど、間違えてるかもしれません。(^^; 4/2生まれ~翌年4/1生まれまでが同学年 新学期は4/1と仮定して 考えてみました。 ≪フィールド名≫『タイプ』【計算結果】 ●≪検索日≫ 『グローバル』【日付】 ●≪年度≫ 『計算』 【テキスト】 If( Month( 検索日) >= 4, Year(検索日) & "年度" , Year(検索日) - 1 & "年度" ) ●≪生年月日≫ 『日付』 ●≪学年齢≫ 『計算』【数字】 If( Month(生年月日) = 4 and Day(生年月日) > 1 or Month(生年月日) > 4 , 年度 - Year(生年月日) , 年度 -Year(生年月日) + 1) ●≪学校区分≫ 『計算』【テキスト】 If(学年齢 <= 12 , "小学" , "中学" ) ●≪学年≫ 『計算』【テキスト】 If( 学年齢 <= 6 or 学年齢 > 15 , " " , 学校区分 & If( 学年齢 <= 12 , 学年齢 -6 & "年" , 学年齢 - 12 & "年" ) ) これで、本日の 小学生、中学生の学年が表示されるかと思います。 学校区分と学年齢、学年の計算式を少し編集すれば、 高校・大学等 表示させ、それ以外は空欄に出来ると思います。 もっとシンプルに出来るかもしれないし、 急いでやったので細かい年齢と学年の繋がりに間違いがあるかもしれませんが、 数字を変えることで、ご希望の表示になると思うのですが・・・ 間違えがありましたら、ご指摘下さい。 その場合は 質問者の方ごめんなさい。 F(^-^;)

yamashiro
質問者

お礼

どうもありがとうございます。 いろんな方法があるようですね。 試してみます。どうもありがとうございました。

  • himajin1
  • ベストアンサー率43% (184/422)
回答No.2

#1 です。 何日からが新学期(新学年)?という定義が不明なので、必要ないかもしれませんが、 特異日(毎年4月1日)に誤差(昨年の学年を表示する)が発生することが解ったので、下記に修正します。 7:学年数字  :計算フィールド(数字、非保存)          = (基準日 - 学年基準日 + 1 )/365.2422

関連するQ&A