| 2023/03/30(Thu) 19:26:07 編集(投稿者)
> 1年365行(366行)で作られる表です。
これってカレンダーという名前のスケジュール表なんですか???
全日程を行(レコード)すると1年365行(366行)必要になりますよね。
単に日付を表の文字列型/日付型 の項目へ代入するだけであれば、日付ピッカー(ポップアップ・カレンダー)をお勧めします。
これはミニ・カレンダーのフォームを経由して、日付を表の文字列型/日付型 の項目へ代入するユーティリティです。
拙作のミニ・カレンダーはNULLフォームです。つまり、表を利用していません。
もしも、よろしければお試しください。
拙作のミニ・カレンダーはフォームの[テキストボックス]の[入力支援ボタン]で利用出来ます。
【多遊】さんのダウンロードコーナーの
#205 INF_Framework 第3.3版 改訂版(MkII) サンプル集 for 桐10s / 桐sSL
<サンプル集のファイル> INF_Framework_2022_Samples
: : 1st_Spec_Memo_WIDGET_電卓・カレンダ.txt … 仕様メモ : : INF_DatePicker.kex INF_DatePicker.wfx : : カレンダー入力.tbx カレンダー入力.wfx ← これを開くと実際に試せます : ・・・・・・・・・・・・・ :
【入力支援ボタンの例】 カレンダー入力.wfx オブジェクト名:txt文字列型入力支援ボタン
プロパティ名 設定値 オブジェクト名 txt文字列型入力支援ボタン 入力支援ツールの種別 モーダルフォーム 選択値リスト &年月日, "INF_DatePicker.wfm" 選択値の設定 選択値 選択時置換 する
WIDGET_DatePicker の解説|あこめの桐のプログラミング入門 http://akome409102.html.xdomain.jp/Kiri/Widget33MkII_DatePicker.html
p.s.
カレンダーの国民の祝日(固定日/第?週?曜日)・春分・秋分・振替休日の判定は面倒ですよね。
今後も法令によって変更が予想されます。
なので、日付の入力はフォームの[テキストボックス]の[入力支援ボタン]でミニ・カレンダーを利用するのが便利ですよ。
p.p.s.
非常に分かり難いですが、INF_DatePicker.kex の該当部をご参考までに。
手続き定義開始 prc祝日データの初期化( ) 変数宣言 自動,文字列{ &icon, &title = "prc祝日データの初期化( )", &msg } 変数宣言 自動,整数 { &traceON = #対応番号( #uc2( #変数( "INFmTraceModuleNameList" ) ), "ALL" ) .or #対応番号( #uc2( #変数( "INFmTraceModuleNameList" ) ), "INF" ) .or #対応番号( #uc2( #変数( "INFmTraceModuleNameList" ) ), "HDL" ) } 変数宣言 自動,文字列{ &traceMsg = #cond( #変数( "INFmTraceFormPathAdd" ), &INFmMyWfmPath ) + &INFmMyWfmName + " hdl=" + #last( " " + #str( &hwindow ), 2 ) + ">" + &title } ** &traceON = 0 条件 ( &traceON ) トレース出力 &traceMsg + "を実行開始しました"
* 月,日,回,曜日,祝日等名, 適用開始年,適用終了年 &m祝日01月[1] = #trim( " 1, 1,,, 元日 ,1948," , 4 ) &m祝日01月[2] = #trim( " 1,15,,, 成人の日 ,1948,1999", 4 ) &m祝日01月[3] = #trim( " 1, 0, 2,月, 成人の日 ,2000," , 4 ) &m祝日02月[1] = #trim( " 2,11,,, 建国記念の日,1967," , 4 ) &m祝日02月[2] = #trim( " 2,23,,, 天皇誕生日 ,2020" , 4 ) /* 2019年、2月23日に期日変更される予定。ただし適用は2020年からで、2019年は日程上設定されない */ &m祝日02月[3] = #trim( " 2,24,,, 大喪の礼 ,1989,1989", 4 ) /* 皇室慶弔行事 1989年(平成元年)2月24日 昭和天皇の大喪の礼 */ &m祝日03月[1] = #trim( " 3, 0, 0,, 春分の日 ,1948," , 4 ) &m祝日04月[1] = #trim( " 4,29,,, 天皇誕生日 ,1948,1988", 4 ) &m祝日04月[2] = #trim( " 4,29,,, みどりの日 ,1989,2006", 4 ) &m祝日04月[3] = #trim( " 4,29,,, 昭和の日 ,2007," , 4 ) &m祝日04月[4] = #trim( " 4,10,,, 親王結婚の儀,1959,1959", 4 ) /* 皇室慶弔行事 1959年(昭和34年)4月10日 皇太子・明仁親王の結婚の儀 */ &m祝日04月[5] = #trim( " 4,30,,, 国民の休日 ,2019,2019", 4 ) &m祝日05月[1] = #trim( " 5, 3,,, 憲法記念日 ,1948," , 4 ) &m祝日05月[2] = #trim( " 5, 4,,, 国民の休日 ,1988,2006", 4 ) /* 5月4日は1988年(昭和63年)〜 2006年(平成18年)の間は、一部(日曜日or月曜日)を除き「国民の休日」*/ &m祝日05月[3] = #trim( " 5, 4,,, みどりの日 ,2007," , 4 ) &m祝日05月[4] = #trim( " 5, 5,,, こどもの日 ,1948," , 4 ) &m祝日05月[5] = #trim( " 5, 1,,, 天皇の即位 ,2019,2019", 4 ) /* 天皇の即位の日及び即位礼正殿の儀の行われる日を休日とする法律 */ &m祝日05月[6] = #trim( " 5, 2,,, 国民の休日 ,2019,2019", 4 ) &m祝日06月[1] = #trim( " 6, 9,,, 親王結婚の儀,1993,1993", 4 ) /* 皇室慶弔行事 1993年(平成5年)6月9日 皇太子・皇太子徳仁親王の結婚の儀 */
** 2020.04.01 要素数変更 &m祝日07月[5] → &m祝日07月[7] &m祝日08月[3] → &m祝日08月[4] &m祝日07月[1] = #trim( " 7,20,,, 海の日 ,1996,2002", 4 ) &m祝日07月[2] = #trim( " 7, 0, 3,月, 海の日 ,2003,2019", 4 ) &m祝日07月[3] = #trim( " 7,23,,, 海の日 ,2020,2020", 4 ) &m祝日07月[4] = #trim( " 7,22,,, 海の日 ,2021,2021", 4 ) /* 2020.04.01 オリンピック延期追加 */ **&m祝日07月[4] = #trim( " 7, 0, 3,月,海の日 ,2021," , 4 ) /* 2020.04.01 オリンピック延期 &m祝日07月[4] → &m祝日07月[7] */ &m祝日07月[5] = #trim( " 7,24,,, スポーツの日,2020,2020", 4 ) &m祝日07月[6] = #trim( " 7,23,,, スポーツの日,2021,2021", 4 ) /* 2020.04.01 オリンピック延期追加 */ &m祝日07月[7] = #trim( " 7, 0, 3,月, 海の日 ,2022," , 4 ) /* 2020.04.01 オリンピック延期 &m祝日07月[4] → &m祝日07月[7] */
&m祝日08月[1] = #trim( " 8,11,,, 山の日 ,2016,2019", 4 ) &m祝日08月[2] = #trim( " 8,10,,, 山の日 ,2020,2020", 4 ) **&m祝日08月[3] = #trim( " 8,11,,, 山の日 ,2021," , 4 ) &m祝日08月[3] = #trim( " 8,11,,, 山の日 ,2022," , 4 ) /* 2020.04.01 オリンピック延期 &m祝日08月[3] → &m祝日08月[3] */ &m祝日08月[4] = #trim( " 8, 8,,, 山の日 ,2021,2021", 4 ) /* 2020.04.01 オリンピック延期追加 */
&m祝日09月[1] = #trim( " 9,15,,, 敬老の日 ,1966,2002", 4 ) &m祝日09月[2] = #trim( " 9, 0, 3,月, 敬老の日 ,2003," , 4 ) &m祝日09月[3] = #trim( " 9, 0, 0,, 秋分の日 ,1948," , 4 ) &m祝日09月[4] = #trim( " 9, 0, 0,, 国民の休日 ,2009," , 4 ) /* 敬老の日 と 秋分の日 の間で、月曜日(振り替え休日)を除く 最初の適用は2009年(平成21年)9月22日 */ &m祝日10月[1] = #trim( "10,10,,, 体育の日 ,1966,1999", 4 ) &m祝日10月[2] = #trim( "10, 0, 2,月, 体育の日 ,2000,2019", 4 )
**&m祝日10月[3] = #trim( "10, 0, 2,月,スポーツの日,2021," , 4 ) &m祝日10月[3] = #trim( "10, 0, 2,月, スポーツの日,2022," , 4 ) /* 2020.04.01 オリンピック延期 &m祝日10月[3] → &m祝日10月[3] */
&m祝日10月[4] = #trim( "10,22,,, 即位の礼正殿の儀,2019,2019", 4 ) /* 天皇の即位の日及び即位礼正殿の儀の行われる日を休日とする法律 */ &m祝日11月[1] = #trim( "11, 3,,, 文化の日 ,1948," , 4 ) &m祝日11月[2] = #trim( "11,12,,, 即位礼正殿の儀,1990,1990", 4 ) /* 皇室慶弔行事 1990年(平成2年)11月12日 即位の礼正殿の儀 */ &m祝日11月[3] = #trim( "11,23,,, 勤労感謝の日,1948," , 4 ) &m祝日12月[1] = #trim( "12,23,,, 天皇誕生日 ,1989,2018", 4 ) ** " 0, 0,,, (振替休日) ,1973," , 4 ) 振り替え休日はパラメータを設定できないので処理は、prcPublicHolidayVisible で行う
条件 ( &traceON ) トレース出力 &traceMsg + "を実行終了しました" 手続き定義終了
手続き定義開始 prc祝日リスト取得( 文字列 &dayString, 文字列 &variableName, 参照 文字列 &dayStringList, 参照 文字列 &publicHolidayList ) 繰り返し &i = 1, &loop, &step if ( &適用開始年 <= &year .and &適用終了年 >= &year ) if ( &day ) if ( &祝日名 = "国民の休日" ) if ( &曜日 = "日" .or &曜日 = "月" ) end end else if ( &序数 ) 繰り返し ( &month = #月( &yyyymmdd ) ) if ( &dayOfWeekString = &曜日 ) end if ( &dayOfWeekString = &曜日 .and &曜日cnt = &序数 ) 繰り返し中止 end 繰り返し終了 end if ( &祝日名 = "春分の日" ) end if ( &祝日名 = "秋分の日" ) end if ( &祝日名 = "国民の休日" ) /* 敬老の日 と 秋分の日 の間で、月曜日(振り替え休日)を除く 最初の適用は2009年(平成21年)9月22日 */ if ( &日数 = 2 ) if ( &曜日 <> "月" ) else end else end end end if ( &yyyymmdd <> #u ) end else end 繰り返し終了 手続き定義終了
|