내 질문은 : 어떻게 계산 된 필드에 의해 DBGrid를 주문할 수 있습니다. C++ Builder Starter Editon을 사용하고 있으며이 버전에서는 필드의 인덱스를 만들고 열의 인덱스로 순서를 만들 수있는 ClientDataSet을 사용할 수 없습니다.이 옵션이 아닙니다. (많은 스레드에서 이것을 읽으십시오) TIBDataSet (아래 ibds)을 사용하고 있으며 데이터를 필터링하고 있습니다. 잘 작동 .... 계산 된 것들에 대한 아닌 DB 열에 대한 ...이 문제를 해결할 수있는 방법에 대한 아이디어?계산 된 필드로 DBGrid 정렬
void __fastcall TForm1::DBGrid3TitleClick(TColumn *Column)
{
static cIdx = 0;
static String oby = "ASC";
TBookmark CurrentPosition;
TIBDataSet *ibds = IBDS_accountsDist;
CurrentPosition = ibds->GetBookmark();
if (cIdx != Column->Index) {
oby = "ASC"; // ANOTHER column choosen
} else if (oby == "ASC") {
oby = "DESC";
} else oby = "ASC";
cIdx = Column->Index;
ibds->Filtered = false;
switch (Column->Index){
case 0: ibds->Filter = "ORDER BY SumAj "+oby; break; // SumAj is a calculated field => Does not work
case 1: ibds->Filter = "ORDER BY CSAL_ACCOUNTNAME "+ oby; break; // DB-field WORKS FINE
}
ibds->Filtered = true;
ibds->GotoBookmark(CurrentPosition);
}
답장을 보내 주셔서 감사합니다. 나는 여전히 문제를 해결하고 많은 것을 읽어야하고 이제는 여러분의 게시물을 ... 그래, 우리는 C++ Builder의 일반 버전으로 업그레이드 할 것이라고 생각한다! –