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

C++빌더 Q&A
C++Builder Programming Q&A
[34993] Re:SQLClientDataSet에 대해서...
박지훈.임프 [cbuilder] 1025 읽음    2004-05-14 00:52
제가 강의를 할 때 TSQLClientDataSet에 대해, SQLDataSet-Provider-ClientDataSet을 조합한 것으로 편의용
컴포넌트라고 말씀드렸었죠. 사실이긴 합니다만, 방금 TSQLClientDataSet의 소스를 보니 좀 문제가 있는 것
같습니다.

결과만 말씀드리면, TSQLClientDataSet에서 CommandText를 설정할 때 Params가 같이 설정되는 것은 디자인타임
에서만 가능하도록 되어있더군요. 그렇다고 이게 VCL의 코드상의 버그인 것은 아닌 것 같고, TSQLClientDataSet의
설계상의 버그인 것 같습니다. 이것은 앞에서 말씀드렸다시피 세가지 컴포넌트를 하나로 뭉뚱그려놓은 것인데,
그러다보니 설계상으로 꼬인 듯 합니다. (내부적으로 수퍼클래스인 TClientDataSet의 Params는 원래 프로바이더를
위한 파라미터인데 TSQLClientDataSet으로 상속되면서 쿼리를 위한 파라미터로 쓰이게 되어 꼬인 듯...)

그래서, 디자인타임이 아닌 코드상에서 런타임에 파라미터를 설정하기 위해서는 TSQLClientDataSet을 쓰는
것은 문제가 있을 것 같습니다. 이런 필요가 있다면 원칙대로 SQLDataSet-Provider-ClientDataSet의 조합을
쓰는 수밖에 없을 것 같구요.

참고로, VCL의 다음 버전이 탑재되어 있는 델파이 7에서는 TSQLClientDataSet을 없애고 역할은 비슷하지만
구조가 다른 TSimpleDataSet이라는 새로운 컴포넌트가 포함되어 있습니다. 이 TSimpleDataSet에서는 상속받은
Params와는 별도로, TSQLDataSet 객체인 DataSet 속성이 있고 그 멤버인 Params를 사용할 수 있게 되어있습니다.
다시 말해, TSimpleDataSet.Params와 TSimpleDataSet.DataSet.Params이 별도로 있고, 그 역할도 다르다는
얘기죠.

그럼...

seiyes 님이 쓰신 글 :
: 안녕하세요?
: c++builder 6.0을 쓰고 있는 초보입니다....
:
: grid를 이용하여 SQLClientDataSet과 연동하려고 하는데....다음과 같이 했습니다..
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:       AnsiString empNo = Edit1->Text;
:       SQLClientDataSet1->Close();
:       SQLClientDataSet1->CommandText = "select * from emp where empno = :empNo ";
:   ->    SQLClientDataSet1->Params->ParamByName("empNo")->AsString = empNo;
:       SQLClientDataSet1->Open();
: }
:
: 근데...에러를 뱉어내내요....
: 그런 파라메터가 없다고 합니다...
: -> 이 부분이 문제인거 같은데.....해결을 어케해야하나요..ㅜ.ㅜ
:
: 고수분들의 좋은 조언 부탁드립니다....^^

+ -

관련 글 리스트
29730 SQLClientDataSet에 대해서... seiyes 1033 2004/05/13
35055     Re:SQLClientDataSet에 대해서... suda 1006 2004/05/17
34993     Re:SQLClientDataSet에 대해서... 박지훈.임프 1025 2004/05/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.