procedure TForm1.UpdateCot;
var jobymd : String;
begin
with Query1 do
begin
Close;
Sql.Clear;
Sql.Add('select to_char(AAJOBYMD, ''yyyymmdd'') jobymd ');
Sql.Add(' from AAYRECOT ');
Sql.Add(' where AAFILGBN = :FILGBN ');
Sql.Add(' and AAREQFLG = :REQFLG ');
Sql.Add(' and AAREQYMD = to_date(:REQYMD, ''YYYYMM'') ');
Sql.Add(' and AAMEDYMD = to_date(:MEDYMD, ''YYYYMM'') ');
Sql.Add(' and AAPATNO = :PATNO ');
Sql.Add(' and AASEQUEN = :SEQUEN ');
ParamByName('FILGBN').AsString :=
Form2.Qretot1.FieldByName('FILGBN').AsString;
ParamByName('REQFLG').AsString :=
Form2.Qretot1.FieldByName('REQFLG').AsString;
ParamByName('REQYMD').AsString :=
Form2.Qretot1.FieldByName('REQYMD').AsString;
ParamByName('MEDYMD').AsString :=
Form2.Qretot1.FieldByName('MEDYMD').AsString;
ParamByName('PATNO').AsString :=
Form2.Qretot1.FieldByName('PATNO').AsString;
ParamByName('SEQUEN').AsInteger :=
Form2.Qretot1.FieldByName('SEQUEN').AsInteger;
Open;
end;
jobymd := Form1.Query1.FieldByName('JOBYMD').AsString;
....
...
..
with Pc_LineNo do // (stored procedure)
begin
Prepare;
ParamByName('IN_AAFILGBN').AsString :=
Form2.Qretot1.FieldByName('FILGBN').AsString;
ParamByName('IN_AAREQFLG').AsString :=
Form2.Qretot1.FieldByName('REQFLG').AsString;
ParamByName('IN_AAREQYMD').AsDateTime :=
StrtoDateTime(Form2.Qretot1.FieldByName('REQYMD').AsString);
/////이부분에서 에러가 걸리는군여....-_-;;
ParamByName('IN_AAMEDYMD').AsDateTime :=
StrToDateTime(Form2.Qretot1.FieldByName('MEDYMD').AsString);
ParamByName('IN_AAPATNO').AsString :=
Form2.Qretot1.FieldByName('PATNO').AsString;
ParamByName('IN_AASEQUEN').AsInteger :=
Form2.Qretot1.FieldByName('SEQUEN').AsInteger;
ParamByName('IN_AAJOBYMD').AsDateTime := StrToDateTime(jobymd);
ExecProc;
Unprepare;
end;
end;
에러 메세지는 밑에....
Project Proect1.exe raised exception class EConvertError with message ''200009' is not a valid date and time'. Process stopped. Use Step or Run to continue.
다른 쿼리에서 스트링 형식으로 날짜를 가져와서 스토어드 프로시져의 파라미터로 쓰려구 하는데 자꾸 에러가 나는군여....
것두 모두 date 형식만여..... -_-;;;
제발 고수님들의 빠른 답변을 기대할께여...ㅠㅠ
StrtoDateTime 의 파라메터 형식이 틀려서 그럴것입니다.
제가 알기론 형식이
"yy/mm/dd hh:nn:ss"로 알고 있습니다.
경주님이 입력하신 형식은 "yyyymm" 으로 입력하셔서
매칭이 되지 않아서 나는 에러 같습니다.
아래처럼 함수를 작성하셔서 이용하는게 어떨까요..
function TForm1.Make_DateTime(const strDate: string) TDateTime;
var
Year, Month: Word;
begin
Year := StrToInt( Copy(strDate, 1, 4) );
Month := StrToInt( Copy(strDate, 5, 2) );
result := EncodeDate(Year, Month, 1);
//에러메세지를 보니 년월일만 들어 있는 것 같아서 년월만 추출해서 리턴합니다.
end;
이렇게 함수를 만들어서
ParamByName('IN_AAREQYMD').AsDateTime :=
Make_DateTime(Form2.Qretot1.FieldByName('REQYMD').AsString);
이런 방법으로 사용하는게 어떨까 싶네요..
도움이 되셨기를...
방경주 wrote:
> procedure TForm1.UpdateCot;
> var jobymd : String;
> begin
> with Query1 do
> begin
> Close;
> Sql.Clear;
> Sql.Add('select to_char(AAJOBYMD, ''yyyymmdd'') jobymd ');
> Sql.Add(' from AAYRECOT ');
> Sql.Add(' where AAFILGBN = :FILGBN ');
> Sql.Add(' and AAREQFLG = :REQFLG ');
> Sql.Add(' and AAREQYMD = to_date(:REQYMD, ''YYYYMM'') ');
> Sql.Add(' and AAMEDYMD = to_date(:MEDYMD, ''YYYYMM'') ');
> Sql.Add(' and AAPATNO = :PATNO ');
> Sql.Add(' and AASEQUEN = :SEQUEN ');
> ParamByName('FILGBN').AsString :=
> Form2.Qretot1.FieldByName('FILGBN').AsString;
> ParamByName('REQFLG').AsString :=
> Form2.Qretot1.FieldByName('REQFLG').AsString;
> ParamByName('REQYMD').AsString :=
> Form2.Qretot1.FieldByName('REQYMD').AsString;
> ParamByName('MEDYMD').AsString :=
> Form2.Qretot1.FieldByName('MEDYMD').AsString;
> ParamByName('PATNO').AsString :=
> Form2.Qretot1.FieldByName('PATNO').AsString;
> ParamByName('SEQUEN').AsInteger :=
> Form2.Qretot1.FieldByName('SEQUEN').AsInteger;
> Open;
> end;
>
> jobymd := Form1.Query1.FieldByName('JOBYMD').AsString;
> ....
> ...
> ..
> with Pc_LineNo do // (stored procedure)
> begin
> Prepare;
> ParamByName('IN_AAFILGBN').AsString :=
> Form2.Qretot1.FieldByName('FILGBN').AsString;
> ParamByName('IN_AAREQFLG').AsString :=
> Form2.Qretot1.FieldByName('REQFLG').AsString;
> ParamByName('IN_AAREQYMD').AsDateTime :=
> StrtoDateTime(Form2.Qretot1.FieldByName('REQYMD').AsString);
> /////이부분에서 에러가 걸리는군여....-_-;;
> ParamByName('IN_AAMEDYMD').AsDateTime :=
> StrToDateTime(Form2.Qretot1.FieldByName('MEDYMD').AsString);
> ParamByName('IN_AAPATNO').AsString :=
> Form2.Qretot1.FieldByName('PATNO').AsString;
> ParamByName('IN_AASEQUEN').AsInteger :=
> Form2.Qretot1.FieldByName('SEQUEN').AsInteger;
> ParamByName('IN_AAJOBYMD').AsDateTime := StrToDateTime(jobymd);
> ExecProc;
> Unprepare;
> end;
> end;
> 에러 메세지는 밑에....
>
> Project Proect1.exe raised exception class EConvertError with message ''200009' is not a valid date and time'. Process stopped. Use Step or Run to continue.
>
> 다른 쿼리에서 스트링 형식으로 날짜를 가져와서 스토어드 프로시져의 파라미터로 쓰려구 하는데 자꾸 에러가 나는군여....
>
> 것두 모두 date 형식만여..... -_-;;;
>
> 제발 고수님들의 빠른 답변을 기대할께여...ㅠㅠ