답변 감사드립니다.
저도 님 말처럼 SQL.Tetx 속에 넣어서 처리 하고 있긴 한데 문장이 너무 길어지고
파라미터가 많은 Query 문, 같은 파라미터를 반복해서 사용하는 Query문에는
불편하기 그지 없더라구요..
다른 해결책은 정녕 없나요? ^^
1. 델파이 버전은 7.0 이고..
2. 데이타베이스는 MS-SQL 2005 입니다..
박지훈.임프 님이 쓰신 글 :
: 파라미터를 가진 SQL문이 너무 복잡한 경우, 간혹 델파이의 런타임이 SQL 문 파싱에 실패하는 경우가 있었던 것 같습니다. 그럴 때 어떻게 해서 피해간 기억이 있는데, 어떻게 피했는지 기억이 가물가물하네요.
:
: 파라미터 지정 부분을 포함해서 해당 SQL문을 디자인타임에 TSQLQuery의 SQL.Text 속성에 넣고 그대로 Active 속성을 true로 해보시기 바랍니다. 어떤 증상이 발생하는지요.
:
: 그리고 추가로 다음의 두가지를 알려주세요.
: 1. 델파이 버전이 몇버전인지?
: 2. 연결하는 데이터베이스 서버는 어떤 제품인지?
:
:
:
: 노재환 님이 쓰신 글 :
: : 예전 게시글에도 같은 내용이 있었던 내용입니다.
: : 거기에 대한 답글이 없어 이렇게 문의 드립니다.
: :
: : BDE 를 DBExpress 로 변환 과정중에 TQuery 에서는 문제가 없던게 TSQLQuery로
: : 변환하여 돌리면 에러가 발생합니다.
: :
: : error 가 발생
: : sql state 42000
: : error code = 0
: : 이런 에러가 발생함니다
: :
: : 1 Sql.Clear;
: : 2 Sql.Add('select icode, rtrim(ite_name + '' '' + ite_size) iname,');
: : 3 Sql.Add(' substring(cyymmdd,7,2) as cday, sum(cqty) as cqty, sum(camt)/1000 as camt');
: : 4 Sql.Add(' from (');
: : 5 Sql.Add(' select sal_ite_code as icode, sal_mem_code as ccode, sal_yymmdd as cyymmdd,');
: : 6 Sql.Add(' sum(sal_qty) as cqty, sum(sal_amt) as camt');
: : 7 Sql.Add(' from sale');
: : 8 Sql.Add(' where sal_flag = ''1''');
: : 9 Sql.Add(' and sal_ite_code between :MFr and :MTo');
: : 10 Sql.Add(' and sal_yymmdd between :DFr and :DTo');
: : 11 Sql.Add(' group by sal_ite_code, sal_mem_code, sal_yymmdd');
: : 12 Sql.Add(' having sum(sal_box) <> 0');
: : 13 Sql.Add(' ) tmp');
: : 14 Sql.Add(' left outer join item on ite_code = icode');
: : 15 Sql.Add(' group by icode, ite_name, ite_size, cyymmdd');
: : 16 Sql.Add(' order by icode, cyymmdd');
: : ParamByName('DFr').AsString := EdDFr.Text;
: : ParamByName('DTo').AsString := EdDTo.Text;
: : ParamByName('MFr').AsString := EdMFr.Text;
: : ParamByName('MTo').AsString := EdMTo.Text;
: : Open;
: :
: : 그런데 ParamByName 절을 빼면 이상 없이 수행이 되는데 ,
: : ParamByName는 어찌 해결해야 하나요??
: :
: : 참고로 5~12 라인만 뽑아 수행하면 ParamByName 절을 넣어도 잘 됩니다.
: :
: : 도통 원인을 모르겠네요.. 고수님들의 답변 부닥트립니다.
|