자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder FireDAC에서 검색후, 검색 결과만 DBGrid 에 업데이트는 어떻게 하나요?
2019.01.29 22:18
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
MasterReg 라는 테이블에서 검색을 해서 검색 결과만 DBgrdRegDoc라는 디비그리드에 보이게 하려 합니다.
아래 코드 처럼 작성을 했으며,
검색된 레코드 갯수를 확인하면 잘 됩니다. (ShowMessage(FDTableRegDoc->RecordCount);)
BBGrid 에 보이는 레코드를 클릭하면, 해당 자료를 읽게 하였으며,
검색어에 포함되지 않은 레코드는 클릭을 하여도, 해당 자료를 읽을수는 없습니다.
close(), open(), refrash() 등등 시도를 해 보았는데, 안되네요...
그런데, DBgrdRegDoc라는 디비그리드에 기존 것을 초기화 하고 검색된 결과만 보이게 하려는데, 어떻게 해야 하나요?
FDTableRegDoc->Active = false;
FDTableRegDoc->TableName = "MasterReg";
FDTableRegDoc->Connection = FormMain->FDConnection1;
FDTableRegDoc->Active = true;
FDTableRegDoc->Open();
// 검색어 조건에 따라 SQL 문장을 변경 한다.
if (AsGum == "전체" && AsMyun == "전체" && AsRi == "전체" && AsFacType == "전체" && AsBunGi == "") {
AsSQLString = "I_MasterID <> 0";
FDTableRegDoc->Filter = AsSQLString;
}
else {
AsSQLString = AsSQLGum + AsSQLMyun + AsSQLRi + AsSQLBunGi;
FDTableRegDoc->Filter = AsSQLString;
// select * from MasterReg where AddressSi='무명군' and AddressMyun = '무명면';
}
FDTableRegDoc->Filtered = true;
FDTableRegDoc->FilterChanges;
FDTableRegDoc->First();
FDTableRegDoc->Refresh();
////**** 테이블과 DBGrid 연결이 안된듯 함
FDTableRegDoc->EnableControls();
ShowMessage(FDTableRegDoc->RecordCount);
DBgrdRegDoc->Refresh();
FDTableRegDoc->Close();
C++ Builder FireDAC에서 검색후, 검색 결과만 DBGrid 에 업데이트는 어떻게 하나요?
2019.01.29 22:18
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
MasterReg 라는 테이블에서 검색을 해서 검색 결과만 DBgrdRegDoc라는 디비그리드에 보이게 하려 합니다.
아래 코드 처럼 작성을 했으며,
검색된 레코드 갯수를 확인하면 잘 됩니다. (ShowMessage(FDTableRegDoc->RecordCount);)
BBGrid 에 보이는 레코드를 클릭하면, 해당 자료를 읽게 하였으며,
검색어에 포함되지 않은 레코드는 클릭을 하여도, 해당 자료를 읽을수는 없습니다.
close(), open(), refrash() 등등 시도를 해 보았는데, 안되네요...
그런데, DBgrdRegDoc라는 디비그리드에 기존 것을 초기화 하고 검색된 결과만 보이게 하려는데, 어떻게 해야 하나요?
FDTableRegDoc->Active = false;
FDTableRegDoc->TableName = "MasterReg";
FDTableRegDoc->Connection = FormMain->FDConnection1;
FDTableRegDoc->Active = true;
FDTableRegDoc->Open();
// 검색어 조건에 따라 SQL 문장을 변경 한다.
if (AsGum == "전체" && AsMyun == "전체" && AsRi == "전체" && AsFacType == "전체" && AsBunGi == "") {
AsSQLString = "I_MasterID <> 0";
FDTableRegDoc->Filter = AsSQLString;
}
else {
AsSQLString = AsSQLGum + AsSQLMyun + AsSQLRi + AsSQLBunGi;
FDTableRegDoc->Filter = AsSQLString;
// select * from MasterReg where AddressSi='무명군' and AddressMyun = '무명면';
}
FDTableRegDoc->Filtered = true;
FDTableRegDoc->FilterChanges;
FDTableRegDoc->First();
FDTableRegDoc->Refresh();
////**** 테이블과 DBGrid 연결이 안된듯 함
FDTableRegDoc->EnableControls();
ShowMessage(FDTableRegDoc->RecordCount);
DBgrdRegDoc->Refresh();
FDTableRegDoc->Close();
아래 코드와 같이 수정 하면 됩니다.
우선 테이블이 아닌 쿼리 로 해야 하는 것이 었습니다.
FDQueryRegDoc->Filtered = false;
// 검색어 조건에 따라 SQL 문장을 변경 한다.
if (AsGum == "전체" && AsMyun == "전체" && AsRi == "전체" && AsFacType == "전체" && AsBunGi == "") {
AsSQLString = "I_MasterID <> 0";
}
else {
AsSQLString = AsSQLGum + AsSQLMyun + AsSQLRi + AsSQLBunGi;
// select * from MasterReg where AddressSi='무명군' and AddressMyun = '무명면';
}
FDQueryRegDoc->Filter = AsSQLString;
FDQueryRegDoc->Filtered = true;