Q&A

  • 이궁..자꾸 같은질문만...
안녕하세요...또 같은질문을 올리고만 마는군여..



가동시간을 구하는건데요..



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) 이렇게했습니다..

근데 가동시간이 안되는데..이를 어찌해야할지..



1  COMMENTS
  • Profile
    소금이 2000.08.02 20:33
    heimdal wrote:

    > 안녕하세요...또 같은질문을 올리고만 마는군여..

    >

    > 가동시간을 구하는건데요..

    >

    > 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;



    도움이 되셨길 바랍니다