Q&A

  • 레코드의 값이 계속 더해집니다... 고수님들의 답변 부탁드립니다.
레코드의 date타입의 필드값을 뽑아내서.. 사용자가 입력한 초를 더해서 비교하는

구문 입니다.



그런데.. 제가 짠 소스에는 레코드가 있을때까지 계속 돌면서 시간값을 나타내야 하는데. 기존의 나온값에다 계속 더해집니다.



우선 소스를 봐주세요..

-------------------------------------------------------------------------------

Query1.First;

for iLoop := 0 to Query1.RecordCount -1 do begin

SQL.Clear;

SQL.Add('SELECT GETDATE() curdate');

Open;

curdate2 := Query2.FieldByName('curdate').AsDateTime;



date1 := Query1.FieldByName('DATE1').AsDateTime;

fTime := fTime + date1;



ft := fTime; // Edit2 의 내용

ShowMessage('DateTimeToStr(ft));



fTime2 := curdate2;

ft2 := fTime2; //비교될 내용

ShowMessage(DateTimeToStr(ft2));

if (DateTimeToStr(ft) < DateTimeToStr(ft2)) then

begin



With Query2 do

begin

Close;

SQL.Clear;

SQL.Add('INSERT INTO SEND_T (UPDATE, NO, CODE) VALUES');

SQL.Add('(:p_UPDATE, :p_NO, :p_CODE)');

ParamByName('p_UPDATE').Value := ft2;

ParamByName('p_NO').AsString := Query1.FieldByname('number').AsString;

ParamByName('p_CODE').AsString := Query1.FieldByname('number2').AsString;

ExecSql;

end;



With Query2 do

begin

Close;

SQL.Clear;

SQL.Add('update ' +Edit1.Text+ ' SET MARK=0');

SQL.Add('WHERE idx = :p_IDX');

ParamByName('p_IDX').AsInteger := Query1.FieldByname('idx').AsInteger;

ExecSql;

end; //쿼리가 끝나면 end 해주기





end

else

begin

ShowMessage('현재시간이 작군요 인서트를 하면 안되는뎅.. ');

end;

Query1.Next;

end;

----------------------------------------------------------------------------



여기서

fTime := fTime + date1;

ft := fTime; // Edit2 의 내용



이 내용이 있는데.. fTime은 사용자가 입력한 값을 나타내구요..

글구 date1은 DB에 datetype은 저장되어 있는 필드 입니다.



쿼리를 날려서 조건에 맞는 레코드가 3개가 있다면 첫번째 레코드의 ft의 값은

제대로 나오는데.. 두번째부터는 첫번째 값에 더해져서.. 좀 큰 숫자가 나옵니다.

우선 date1의 값은..

1. 2001-10-10 오후 3:30:00

2. 2001-10-10 오후 3:50:00

3. 2001-10-10 오후 5:50:00



fTime의 값은 6 입니다.

그래서 첫번째 ft의 값은 2001-10-10 오후 3:31:00 으로 나오는데.

두번째 ft의 값은 2103-07-25 오전 10:40:51초로 나옵니다.



제가 원하는 두번째 ft값은 2001-10-10 오후 3:51:00 입니다.

이렇게 결과값이 나오게 하려면 어케 해야할까요..



고수님들의 한 수 부탁드립니다.









0  COMMENTS