平成23年10月12日(水):初稿 |
○「データ型時間、#時間、#時間値なんて関数を初めて知る1」を続けます。 桐生活20年近く及ぶのにデータ型の時間型を使ったことがなく、#時間、#時間値なんて関数を知らなかった恥ずかしい告白をしました。少々弁解すると、例えば電話受付.tblなどで項目として時刻がありましたが、データ型は文字列で入力モードを漢字変換OFFにして、入力時が自動的に入るように、挿入・編集初期値に #文字列(#時(#時刻 ),2)+":"+#文字列(#分(#時刻 ),2) と言う関数を入れていました。この電話時刻の間の経過時間を求める必要などなく、これに限らず、私の作った桐ファイルで、これまで時間の経過時間が項目として必要なものが全くなかったからです。 ○これに対し、筆頭事務員が作った労働時間ファイルには、正に経過時間が項目として必要であり、その経過時間を求める#時間と言う関数を使い、「先生、#時間なんて基礎的な関数を知らなかったんですか。」なんて嫌みを言われて、「私は必要ないことを勉強するなんて無駄なことはしない主義だ」と負け惜しみを言ってしまいました(^^;)。 ○その#時間ですが、開始、終了、時間という項目を設けて、時間の項目計算式に当初 #時間([開始]),[終了],1) とやったらエラー表示ではねられ、桐ヘルプで 時間文字列 str1 から時間文字列 str2 の経過時間を、nで指定する単位の数値で求めます。 となっているので、文字列にしなかったエラーに気付き #時間(#文字列([開始]),#文字列([終了]),1) とするも、またエラーではねられ、その理由が不明で、桐師匠【多遊】さんに質問して、 #時間値(#時間(#文字列([開始]),#文字列([終了]),2),2) が正解と教えられました。桐ヘルプの nで指定する単位の数値で求めます との戻り値が数値に気付いていなかったのです。 ○#時間(#文字列([開始]),#文字列([終了]),2)で得られる戻り値は数値なので、データ型時間の項目時間には戻りません。そのためデータ型変換関数の#時間値が必要になり、 #時間値(#時間(#文字列([開始]),#文字列([終了]),2),2) としなければなりません。桐ヘルプで、#時間値は、「時間文字列または数値を、指定した単位の時間値に変換します。」と解説されています。 ○そこで筆頭事務員は、ここまでの計算式を自力で考えついたのかと疑問に思って、彼女が労働時間計算ファイルを確認すると、#文字列([開始])も#時間値も使われていません。項目開始が、私が作った電話受付.tblと同様文字列で、更に経過時間は、時間値に戻す必要がなかったからです。と言うのは経過時間は、時間外労働、休日労働などの割増賃金を計算するための数値であり、数値を時間値に変換すると、賃金計算が出来なくなるからでした。 ○更に【多遊】さんから次の解説を頂きました。 #時間値(#時間(#文字列([開始]),#文字列([終了]),1),1) では、いったん数値に直しますので、15分は「0.25」になりますが、20分や40分は「0.333333333」「0.666666666」となり、小さな誤差がでてしまいます 「,1)」は、時間を単位として計算を行いますので、そのため「分単位で計算を行えばいいです」→「,2)」に修正し、 #時間(#文字列([開始]),#文字列([終了]),2) が正解です。 桐ヘルプ(マニュアル)はキッチリ読まなければなりません(^^;)。 以上:1,438文字
|