| 田口さん、遅くなりましたが修正版の補足説明です
>まず、第1点、#曜日についてです。
>#曜日(#連結(#文字列([年])+"年"+#文字列([月])+"月"+#文字列([31])+"日" ))
>で曜日を求めていますが、対応のない日2/29-2/31,4/31等を表示させない式をお教えください。
やはり、データ(仕様)をみないと私にはおこたえできない質問でした
レポート上での話だったのですね。
以下はあくまで、「私ならこうするかな」程度に、参考されてください
○表編
・項目の追加・・[年][月][日]がありますが、[年月日]を追加
例えば曜日を求めるときも、
「#曜日(#連結(#文字列([年])+"年"+#文字列([月])+"月"+#文字列([日])+"日"))」が
「#曜日([年月日])」
この様に短くてすみます。またほかには、日付の入力を[年月日]で行うと、入力エラーも
なくなります
・項目の削除・・[1]〜[31]、[1曜日]〜[31曜日]までの62項目
もし、レポートに印字するだけでしたら不要ですね。
○レポート編
肝心のレポート上の日付と曜日の印字ですが、
・1日〜28日までの日付は、たとえ何月であっても必ず実在する日ですので、ラベルでも
かまいません
・29日〜31日の印字(表示)ですがここ判断が必要です
掲示板でも紹介いたしましたが、
>>#日(#月末(#文字列([年])+"年"+#文字列([月])+"月1日"))
>式は二重になってます
>「#月末」は、年月日を含めた値がもどりますので、さらに「#日」で、日付のみ取得する方法です
>ちなみに"月1日"はいつでもかまいません
もう少し説明すると、「#月末(・・・)」は、対象月の月末日を「年月日」で取り出します
その値をさらに「#日」で、月末日だけを取り出します。以下はこの日と比べていきます
※さらに、表に[月末日]みたいな項目を作成しておくともっとわかりやすいと思います
そして、その月末日が「29」「30」「31」とそれぞれ比較し表示するか否かを判断します
・1日〜28日までの曜日は、単に「#曜日(○年○月1日)〜#曜日(○年○月28日)」を
利用します
・29日〜31日の間は、曜日を求める計算式は上記と同じですが、その前にその日が
実在するかの判定が必要です
仮に31日の計算式で説明すると、下記のようになってます
#条件選択(#日(#月末([年月日]))>=31,#曜日(#文字列([年])+"年"+#文字列([月])+"月"+"31日"),1,#u)
1-------->2-->3---------------->4-->5------------------------------------------------->6->7->
関数式の場合は、多重かっこがあると内側から計算を行いますので、
1.→2.→3.→4.→・・・と、先頭からで無いことにご注意下さい
まず、
3.で、指定した[年月日]の月末日が「年月日」形式で取得されます
2.で、その「年月日」から日のみ、つまり最終日を取得します
4.その月末日と「31(上記の場合)」を比較判定します
1.#条件選択で、4.での判断結果により
成立してれば、5.が実行され、そうでない場合、6.が判定され、その結果、7.が実行されます
「#条件選択・#日・#月末」などは、桐のヘルプも参考にして下さいね
|