私の質問は次のとおりです。計算フィールドで DBGrid を注文するにはどうすればよいですか。C++Builder スターター エディションを使用していますが、このバージョンでは、フィールドにインデックスを作成し、列のインデックスで並べ替えるための ClientDataSet がありません。したがって、これはオプションではありません。(これを多くのスレッドで読んでください)私はTIBDataSet(以下のibds)を使用しており、データをフィルタリングしています。正常に動作します....計算された列ではなく、DB列に対して...この問題を回避する方法についてのアイデアはありますか?
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);
}