過去の桐井戸端BBS (桐ver.9) |
18685 | 日付から曜日を求めたいのだが31日までない月は表示したくない(再質問) | まさき | 2003/01/23-10:12 |
以前に質問した内容について再度質問します。 質問番号はNO18335です。 ---------------------------------------------------------- 集計表.tblという表ですが 日付が項目として[1]〜[31]まであります。 レポートでこの日付の項目から曜日を表示したいので 下記のような設定をしました。 #曜日(#連結(#文字列([西暦年]),"年",#文字列([月]),"月","1日")) と設定しました。 しかし、31日まで無い月も、曜日を表示します。 また2月などは、20日頃の曜日表示が違った値を計算してます。 なぜでしょうか? ---------------------------------------------------------- うにんさんから下記のご指導をいただきました。 ---------------------------------------------------------- 桐では日付文字列の中のありえない数字の部分は1とみなしてくれるので、 例えば31日の部分は #COND(#日(#STR([西暦年])+"-"+#STR([月])+"-31")=31,#曜日(ここは略)) のようにすれば、31日までない月では未定義値になります。 (年と月が数値なので、#日時値生成の方が式が簡単になるかと思ったら、 この関数ではありえない月や日を指定するとエラーになってしまいますね) ------------------------------------------------------------ #cond(#日(#str([西暦年])+"-"+#str([月])+"-31")=31) と設定しましたが、「関数の引数が不正です。・・・・・」とでます。 どうすればいいのでしょうか? 〔1〕〜〔31〕までの項目は数値です。 よろしくお願いいたします。 | |||
18687 | Re:再度質問(曜日) | 通りすがり | 2003/01/23-12:15 |
記事番号18685へのコメント >#cond(#日(#str([西暦年])+"-"+#str([月])+"-31")=31) >と設定しましたが、「関数の引数が不正です。・・・・・」とでます。 >どうすればいいのでしょうか? #COND(#日(#STR([西暦年])+"-"+#STR([月])+"-31")=31,#曜日(ここは略)) です。 ,#曜日(ここは略) が足りないのです。 ちなみに「ここは略」にそのままこの文字を入れてはいけません。(^^ゞ | |||
18690 | Re:再度質問(曜日) | bonito | 2003/01/23-12:57 |
記事番号18687へのコメント うにんさんの考え方を踏襲しつつ #計算(#代入(&秒,1),#代入(&STR,#STR([西暦年],4)+"-"+#STR([月],2)+"-"+#STR(&秒,2)),#条件選択(&秒=#日(&STR),#曜日(&STR),1,#U)) というのは…?(あんまりスマートじゃないかなぁ?) 上の式はホントは一行です (^^; コピペ用に作ったので少し式が長くなりました。 #代入(&秒,1)の1の部分を日付に応じて変更して下さい。 あと最後の#Uは未定義値を返す関数ですが、これを"/" とかにするって手もあるかも…。 PS. 私自身はこれまで在り得ない日付については &日付>#月末(&年月)のように判断してましたが うにんさんの考え方の簡単かも… |
18689 | Re:再度質問です(曜日) | うにん | 2003/01/23-12:41 |
記事番号18686へのコメント >#曜日(#連結(#文字列([西暦年]),"年",#文字列([月]),"月","1日")) >と設定しました。 >しかし、31日まで無い月も、曜日を表示します。 >また2月などは、20日頃の曜日表示が違った値を計算してます。 >なぜでしょうか? >---------------------------------------------------------- >うにんさんから下記のご指導をいただきました。 >---------------------------------------------------------- >桐では日付文字列の中のありえない数字の部分は1とみなしてくれるので、 >例えば31日の部分は >#COND(#日(#STR([西暦年])+"-"+#STR([月])+"-31")=31,#曜日(ここは略)) >のようにすれば、31日までない月では未定義値になります。 すいません、「ここは略」とは、今までどおりの曜日の計算式を使用する意味です。 #日時値生成を使って少し簡単にすれば、31日の曜日を表示するには #COND(#日(#STR([西暦年])+"-"+#STR([月])+"-31")=31,#曜日(#日時値生成([西暦年],[月],31))) となります。 >#cond(#日(#str([西暦年])+"-"+#str([月])+"-31")=31) >と設定しましたが、「関数の引数が不正です。・・・・・」とでます。 #CONDのHELPを見れば引数は偶数個必要(つまり区切りの,が奇数個)とわかるのですが。。。 条件と値のペアを,で区切って指定します。 上の式では条件だけ指定して値が指定されていません。 >〔1〕〜〔31〕までの項目は数値です。 これは特に関係ないですよね? 「ある年・月の1日の曜日を表示するテキストオブジェクト」 「ある年・月の31日の曜日を表示する(そういう日がなければ何も表示しない) テキストオブジェクト」 などを作りたいのだと思いましたが? なお、2月だけおかしいという件は、こちらでは再現しないのでよくわかりません。 |
|||
18692 | Re:再度質問です(曜日) | まさき | 2003/01/23-13:32 |
記事番号18689へのコメント うにんさん、ありがとうございます。 #COND(#日(#STR([西暦年])+"-"+#STR([月])+"-31")=31,#曜日(#日時値生成([西暦年],[月],31))) でうまくいきました。 |