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
[75261] Re:검색한 결과를 DBGrid 에 다시 표시 하려면 어떻게 해야 하나요?
빌더(TWx) [builder] 2687 읽음    2019-01-29 15:09
뽀뽀중 님이 쓰신 글 :
: FireDAC를 이용해서 DB 프로그램을 작성 하고 있습니다.
:
: 1. 테이블에 입력된 자료를 DBGrid에 표시 합니다.
: 2. 검색결과만 동일한 DBGrid에 표시하려 하는데, 이부분을 어떻게 해야 하는지 모르겠습니다.
:   (검색되지 않은 데이터를 삭제 하는 것이 아닌, DBGrid 에서만 보이게 하고 싶습니다.)
:
: 제가 작성한 코드는 아래와 같습니다.
:
:     FDTableRegDoc->Active = false;
:     FDTableRegDoc->TableName = "MasterReg";
:     FDTableRegDoc->Connection = FormMain->FDConnection1;
:     FDTableRegDoc->Active = true;
:     FDTableRegDoc->Open();
:
:     FDTableRegDoc->Edit();
:
:     FormMain->FDCommand1->CommandText->Clear();
:
:     // 검색어 조건에 따라 SQL 문장을 변경 한다.
:     if (AsGum == "전체" && AsMyun == "전체" && AsRi == "전체" && AsFacType == "전체" && AsBunGi == "") {
:         AsSQLString = "SELECT * FROM MasterReg";
:     }
:
:     else {
:         AsSQLString = "SELECT * FROM MasterReg WHERE "  AddressSi='양평군' and AddressMyun = '강상면';
:     }
:
:     FormMain->FDCommand1->CommandText->Add(AsSQLString);
:     FormMain->FDCommand1->Active = true;
:
:     FDTableRegDoc->Post();
:     FDTableRegDoc->Close();
:     DBgrdRegDoc->Refresh();
:     FormMain->FDCommand1->Active = false;
:
: 검색한 결과 만 자동으로 DBgrdRegDoc에 표시(입력)되는 것으로 생각하고 있었는데,....
: 안되네요..
:




답변:



TFDCommand는 TDataSet으로 부터 상속되어 구현된 클래스가 아니라서
data set 의 쿼리 조건 요구에 따라서 데이타 베이스로 부터 rercord set을 리턴 받는 경우엔 사용될 수 없습니다.

TFDCommand는 메모리 테이블과 테이블 아답타와 연계해서 인터페이스를 취할 때나 의미가 있는 거고
각기 클래스들의 컴포지션 관계를 숙지하고 있어야 합니다.


그런데...

VCL Document Help 는 안봐요?


TFDCommand 에 대해서...

"The class does not provide TDataSet-aware access to returned result sets."

라고 친절하게 설명해 놓고 있는데...


다음과 같은 식으로 TFDQuery 로 시퀄(SQL) 조건을 설정해서 사용하세요.

    FDTableRegDoc->SQL->Text = "select * from MasterReg where AddressSi = :AddressSi";
    FDTableRegDoc->ParamByName("AddressSi")->AsString = "시이름";

':AddressSi' 에서 앞 부분의 ':' 는 파라미터임을 나타내는 Token 역할을 합니다.


+ -

관련 글 리스트
75260 검색한 결과를 DBGrid 에 다시 표시 하려면 어떻게 해야 하나요? 뽀뽀중 2604 2019/01/29
75261     Re:검색한 결과를 DBGrid 에 다시 표시 하려면 어떻게 해야 하나요? 빌더(TWx) 2687 2019/01/29
75262         Re:Re:검색한 결과를 DBGrid 에 다시 표시 하려면 어떻게 해야 하나요? 뽀뽀중 2728 2019/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.