お蔵入り

残業時間の合計を計算したいです

残業時間の合計を表示したい。

ボタンを押すと残業時間を計算し表示します。
17時45分からが残業時間です。
22時から15分間休憩があります。この時間は残業時間に含まれません。
残業時間は15分単位です。
毎日残業時間を保存して、当日までの合計を表示するようにしたいのですが、
保存方法と合計方法が分かりません。
できているところまでのソースは下記です。
よろしくお願いします。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
bu_taisya: TButton;
bu_clear: TButton;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Edit2: TEdit;
Label7: TLabel;
Edit7: TEdit;
procedure bu_taisyaClick(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bu_taisyaClick(Sender: TObject);
var
Zan,Shin:TDateTime;
i:integer;
str1,str2,str3,str4:string;

begin
edit1.Text:=TimeToStr(Now);//退社時間

if StrToTime(edit1.Text) < StrToTime('22:30:00') then
begin
edit5.Text:='0:00';
Zan:=StrToTime(edit1.Text)-StrToTime('17:45:00');//普通残業時間
edit2.Text:=TimeToStr(zan);
str1:=copy(edit2.Text,3,2);
str2:=copy(edit2.Text,1,1);
i:=StrToInt(str1);
case i of
00..14:edit3.Text:=str2+':00';
15..29:edit3.Text:=str2+':15';
30..44:edit3.Text:=str2+':30';
45..59:edit3.Text:=str2+':45';
end;

end;

if StrToTime(edit1.Text) >= StrToTime('22:30:00') then
begin
edit3.Text:='4:25';
Shin:=StrToTime(edit1.Text)-StrToTime('22:15:00');//深夜残業時間
edit4.Text:=TimeToStr(Shin);
str3:=copy(edit4.Text,3,2);
str4:=copy(edit4.Text,1,1);
i:=StrToInt(str3);
case i of
00..14:edit5.Text:=str4+':00';
15..29:edit5.Text:=str4+':15';
30..44:edit5.Text:=str4+':30';
45..59:edit5.Text:=str4+':45';
end;

end;





end;

end.

2007-09-05 00:01の質問
この質問は、30日間解決しなかったために自動的に質問が一旦閉じられました。
Ads By Google

回答(1)

1.

2007-09-05 07:49:03
何が目的かにもよりますが、残業時間は自動計算より「手動入力が基本」だと思います。

なぜなら、会社が決めた時間以外に休憩したり自己研鑽したりすることがあるからです。

エクセル表に毎日入力することをオススメします。
Ads By Google

コメント(2)

#1.  ニーム
2007-09-05 18:46:07

begin~endという所を見ると
PascalかDelphiですよね?

残念ながら扱ったことがないので回答できませんが、

「変数表」
「ルーチンごとの説明文などのコメント」
「インデント」

は最低でも入れておかないと、
見づらい、わかりにくい、解析が面倒、
などの理由で回答が得られにくいと思います。

他人のソースを見るのって、結構大変なんですよね……。

2007-09-06 02:55:58

ファイル入出力がわからない、ということでしょうか?

合計に関しては、1行が

日付,残業時間1,残業時間2
みたいなフィールドのCSVファイルに毎日追加していって、第{2,3}カラムをそれぞれ足せばOKだと思います。15分単位なのは経理上の問題なので、記録としては時間は秒単位で取っておいて、あとから(月末に)15で割ればいいかなという気がします。

深夜の方は、日付もとらないとダメじゃないでしょうか?(StrtoDateTimeでしたっけ?)

#Delphiの質問って珍しいですねー。

トラックバック

トラックバックURL: