Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14304] Re:Re:Re:DBExpress TSQLQuery 관려하여 문의 드립니다.
박지훈.임프 [cbuilder] 2402 읽음    2012-06-15 13:33
그 말이 아니구요... ㅎㅎ
파라미터를 다 없앤 날 SQL문을 Text에 넣어보라는 얘기가 아니구요,

1. 파라미터가 있는 지금의 SQL문 그대로, 실행중이 아닌 델파이 디자인타임에, 오브젝트 인스펙터에서 TSQLQuery의 SQL 속성에 넣은 상태에서, Active 속성을 true로 해보시고요. 어떤 일이 발생하는지요. (에러 혹은 오픈 성공?)

2. 또, 오픈이 성공한다면, 그 상태에서 다시 Active 속성을 false로 해서 닫으신 후, 다시 오브젝트 인스펙터에서 TSQLQuery의 Params 속성을 더블클릭해서 파라미터 리스트 창을 띄우고, 거기에 네 개의 파라미터들이 잘 나타나는지 보시고요.

3. 또, 파라미터 리스트가 제대로 다 나타났다면, 그 파라미터들 하나하나를 선택한 상태에서 Value 속성에 값들을 넣어보세요. 다 세팅이 잘 되는지, 아니면 넣는 과정에서 에러가 나는지요.

4. 다음으로, 이렇게 디자인타임에서 파라미터까지 다 잘 들어갔다면, 그 상태에서 Active 속성을 true로 해보세요. 잘 오픈이 되는지, 아니면 에러가 나는지요.

세세하게 설명하느라 글은 긴데 실제 해보시면 간단한 테스트죠. 이 모든 과정을 다 테스트해보면 어딘가에서 걸릴 가능성이 클 거 같고요. 만약 이게 다 성공한다면, 그건 디자인타임에서는 TSQLQuery에 파라미터 SQL문을 넣고 파라미터의 값을 설정하고 오픈하는 과정이 다 성공하는 것 아니겠습니까. 그럼 디자인타임에서는 문제가 없는데 런타임에서만 에러가 난다는 의미인데요, 그럴 가능성은 별로 없을 것 같습니다.

만약 3이나 4의 과정에서 에러가 나는 경우, 이런 시도도 해볼 수 있습니다. 오브젝트 인스펙터에서 파라미터 리스트의 각 파라미터들을 선택한 상태에서, DataType을 지정하시고(아마도 스트링이겠네요) 다시 값을 설정해보세요. 그리고 Active true 해보시고요.

통상적으로 노재현님처럼 에러가 나는 경우엔 이 과정 어딘가에서 단서가 나옵니다. 에러가 난다면 어떤 에러인지 정확하게 알려주시면 해결책을 드릴 수 있을 거 같네요. ^^


노재환 님이 쓰신 글 :
: 답변 감사드립니다.
:
: 저도 님 말처럼 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 절을 넣어도 잘 됩니다.
: : :
: : : 도통 원인을 모르겠네요.. 고수님들의 답변 부닥트립니다.

+ -

관련 글 리스트
14297 DBExpress TSQLQuery 관려하여 문의 드립니다. 노재환 1950 2012/06/13
14298     Re:DBExpress TSQLQuery 관려하여 문의 드립니다. 박지훈.임프 2012 2012/06/14
14302         Re:Re:DBExpress TSQLQuery 관려하여 문의 드립니다. 노재환 2246 2012/06/15
14304             Re:Re:Re:DBExpress TSQLQuery 관려하여 문의 드립니다. 박지훈.임프 2402 2012/06/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.