6 返信 最新の回答 日時: May 11, 2010 4:13 AM ユーザー:youkazu7777

    学齢の自動計算

    youkazu7777

      タイトル

      学齢の自動計算

      フォーラムに投稿

      学齢(何年 何月 で 何年生になるか)を自動的に計算する方法です.

      質問ではありませんが,BigLobeに載っていたベストアンサーが特定の日付で誤差を生む(365.2422で除算するため,学年が切り替わる4月2日前後の1日が微妙に狂う)ために間違った学齢を表示することがわかったので自分の考えた計算方法を載せておきます.

       

      [フィールド定義](タイプ)〔オプション,説明〕

      ・生年月日 (日付)

      ・基準日(日付)〔この日に何年生になるか,本日の日付で自動的に更新させる場合は,このフィールドを計算タイプにして,=Get(日付)とすればよい〕 

      ・早生まれ(計算)〔=If(DayOfYear(生年月日)<=DayOfYear(Date(4;1;Year(生年月日)));"早生まれ";"")〕 

      ・学年開始日(計算)〔=If(早生まれ="早生まれ";Date(4;2;Year(生年月日)-1);Date(4;2;Year(生年月日)))〕 

      ・学年数字(計算)〔=Case(基準日<Date(4;2;Year(基準日));Year(基準日)-Year(学年開始日)-1;Year(基準日)-Year(学年開始日))〕 

      ・学年(計算)〔=Case(学年数字<7;"幼";学年数字<13;"小"&NumToJText(Int(学年数字)-6;0;0);学年数字<16;"中"&NumToJText(Int(学年数字)-12;0;0);学年数字<19;"高"&NumToJText(Int(学年数字)-15;0;0);学年数字>=19;"大人") 

       

      年齢は利用していません. 

      学年を表示する部分は,BigLobeに紹介されていたものと同じです.

      ご参考までに.

       

      環境:MacOSX10.6.3,FMP11

      旧バージョンとの互換性は不明です.(NumToJText関数は以前はなかった?) 

      にyoukazu7777により編集されたメッセージ

        • 1. Re: 学齢の自動計算
          Hiro
            

          他の掲示板のアイデアですが、少しスマートな方法が、.....

             [18912] Re: [18900] 年度年齢ではなく学年齢を…

            http://www.russ.jp/stepbbs/step.cgi?mode=view&no=18900&key=18912

           

          <引用>

          ==========================

          【質問: 年度年齢ではなく学年齢を…】

          年度とは yyyy/04/01...yyyy/03/31
          学年度とはyyyy/04/02...yyyy/04/01

          例えば1978/04/01生まれの方は
          年度年齢では30歳
          学年齢では29歳

          ---------------------------

          取合えずヒントは、数字275は4/1から年末12/31までの日数で、閏年に影響されない固定値です。
          4/2が起算日なら274日ですね。

           

          「年度年齢」フィールド計算式(計算結果:非保存)=
           Let([
            誕生年度=Year(生年月日+275)-1;
            本日年度=Year(Get(日付)+275)-1;
            年度年齢=本日年度 - 誕生年度
           ];
            年度年齢
           )

          「学年齢」フィールド計算式(計算結果:非保存)=
           Let([
            誕生学年=Year(生年月日+274)-1;
            本日学年=Year(Get(日付)+274)-1;
            学年齢=本日学年 - 誕生学年
           ];
            学年齢
           )

          ==========================

           

           

           

          補足:

          > BigLobeに載っていたベストアンサー

          http://soudan1.biglobe.ne.jp/qa741513.html

          こちらを今見たら、上の別法の回答もありましたネ。

          失礼しました。 何れにせよ、この方がシンプルかと!

          しかも回答者は別[1775]スレでもお世話になったAqulaさんでした。

          Google Map の地図部分のみの表示

           

           05-10-2010 10:41 PM

          にHiroにより編集されたメッセージにHiroにより編集されたメッセージ







          • 2. Re: 学齢の自動計算
            youkazu7777
              

            Hiroさん,こんにちは

             

            いま,試してみました.

            なるほど,これはスマートな方法ですね.

            Let関数はあまり使ったことがなくて敬遠していたのですが,こういう風につかえるのはやはり便利ですねぇ…

             

            やはりグローバルフィールドを使わない方が,サーバーで共有する場合も考えるとこちらのほうが良さそうですね.

            この方法を採用させていただきます.

             

            (GoogleMapの件なかなか進みません・・・^^;)

            • 3. Re: 学齢の自動計算
              youkazu7777
                

              それにしても,年齢や学齢の計算方法はネットを調べるといろんな方法が乱立していて,どれがベストなのか悩んでしまいますね.

              自分としては,「年齢計算ならこれ!」,「学齢計算ならこれ!というような定番の方法があれば知りたいと思うのですが. 

               

              • 4. Re: 学齢の自動計算
                aqula
                   6年前ですか、、、忘れていました。
                あの手の掲示板は質問者が締切ってしまえばどうしようもないので、
                ベストアンサーがベストとは限らないんですよね。

                HiroさんはLet関数使っていますけど、(-1)の部分は相殺されて短いし、
                学齢 =
                Year(Get(日付)+274) - Year(生年月日+274)

                あとは使う人が手を加えれば良いんじゃないでしょうか。
                例えば中学教員は小学校の学年は必要ないです。高校になると浪人・留年があるので、学年は別の計算になります。

                また、数え年と同じで年一回同時に加齢しますから保存でも良いかと思います。
                ※更新スクリプトを年一回走らせるとか





                • 5. Re: 学齢の自動計算
                  aqula
                     年齢計算の話ですが、法律上は「誕生日の前日に加齢」なんですよ。
                  (なので4月1日生まれは前学年に入るということです)
                  2月29日生まれの取り扱いもあって何種類もあります。

                  私の所では、毎日再計算するのが鬱陶しいので「満年齢が必要か」問いつめたら「知りたいだけ」だったので使っていません。

                  • 6. Re: 学齢の自動計算
                    youkazu7777
                      

                    aqulaさんこんにちは.

                     

                    そういえば,「留年」という可能性もありますね・・・^^; 

                    まぁ,たしかにそう考えると計算で求めさせることにそれほどの意味はないのかもしれませんね.

                     

                    ところで,レコード数が1万のオーダーになった場合,計算フィールドはパフォーマンスに影響しますか?

                    現在,生徒管理のDBを作り直しているところで,これまで出来なかったことをいろいろ盛り込みたいと考えています.

                    将来的にはファイルメーカーサーバーで共有させる予定なので,パフォーマンスも考慮する必要があると考えています.