안녕하세요...또 같은질문을 올리고만 마는군여..
가동시간을 구하는건데요..
procedure Tmachine.Table1CalcFields(DataSet: TDataSet);
var
firstsec, lastsec, dosec:word;
hh, mm, ss, ms:word;
tmptime:TdateTime;
begin
tmptime:=now;
decodetime(tmptime, hh, mm, ss, ms);
firstsec:=hh*3600 + mm*60 + ss;
tmptime:=now+((1/1440)*20);
decodetime(tmptime, hh, mm, ss, ms);
lastsec:=hh*3600 + mm*60 + ss;//종료시간의 초환산값
dosec:=lastsec - firstsec;
//초를 다시 시,분,초로 환산
hh:=dosec div 3600;
dosec:= dosec mod 3600;
mm:=dosec div 60;
ss:= dosec mod 60;
table1.Append;
table1.FieldByName('가동시간').asdatetime:=encodetime(hh, mm, ss, 0);
table1.Post;
end;
이렇게 했는데..안되더라구여..
어찌해야되져?
여기서 now는 시작시간이구여..입력이 있을당시의 시간이고..우선 20분을 구하기위해서 종료시간을 now+((1/1440)*20) 이렇게했습니다..
근데 가동시간이 안되는데..이를 어찌해야할지..
> 안녕하세요...또 같은질문을 올리고만 마는군여..
>
> 가동시간을 구하는건데요..
>
> procedure Tmachine.Table1CalcFields(DataSet: TDataSet);
> var
> firstsec, lastsec, dosec:word;
> hh, mm, ss, ms:word;
> tmptime:TdateTime;
> begin
> tmptime:=now;
> decodetime(tmptime, hh, mm, ss, ms);
> firstsec:=hh*3600 + mm*60 + ss;
>
> tmptime:=now+((1/1440)*20);
> decodetime(tmptime, hh, mm, ss, ms);
> lastsec:=hh*3600 + mm*60 + ss;//종료시간의 초환산값
>
> dosec:=lastsec - firstsec;
> //초를 다시 시,분,초로 환산
> hh:=dosec div 3600;
> dosec:= dosec mod 3600;
> mm:=dosec div 60;
> ss:= dosec mod 60;
>
> table1.Append;
> table1.FieldByName('가동시간').asdatetime:=encodetime(hh, mm, ss, 0);
> table1.Post;
> end;
>
> 이렇게 했는데..안되더라구여..
> 어찌해야되져?
> 여기서 now는 시작시간이구여..입력이 있을당시의 시간이고..우선 20분을 구하기위해서 종료시간을 now+((1/1440)*20) 이렇게했습니다..
> 근데 가동시간이 안되는데..이를 어찌해야할지..
>
안된다는 부분이 어느부분인지...
가동시간이 안구해진다는 건지 아니면 저장이 안된다는 건지는 확실히 모르겠지만요..
만약 원하시는게 시작시간, 종료시간, 가동시간을 구해서 한번에 저장하시는
거라면 위처럼 Table1CalcFields(DataSet: TDataSet) 이벤트를 따로 사용하여
가동시간을 구하지 마시고요 한꺼번에 구해서 한번에 저장해야
될 것 같은데요....
아래처럼요...
table1.insert;
.... //기타 값들
table1.FieldByName('시작시간').asdatetime:=시작시간;
table1.FieldByName('종료시간').asdatetime:=종료시간;
tmptime:=시작시간;
decodetime(tmptime, hh, mm, ss, ms);
firstsec:=hh*3600 + mm*60 + ss;
tmptime:=now+((1/1440)*20); //종료시간
decodetime(tmptime, hh, mm, ss, ms);
lastsec:=hh*3600 + mm*60 + ss;//종료시간의 초환산값
dosec:=lastsec - firstsec;
//초를 다시 시,분,초로 환산
hh:=dosec div 3600;
dosec:= dosec mod 3600;
mm:=dosec div 60;
ss:= dosec mod 60;
table1.FieldByName('가동시간').asdatetime:=encodetime(hh, mm, ss, 0);
table1.Post;
도움이 되셨길 바랍니다