Ma question est: Comment puis-je commander un DBGrid par un champ calculé. J'utilise C++ Builder Starter Editon et n'ai pas de ClientDataSet disponible dans cette version pour créer un Index sur le champ et l'ordonner par l'index d'une colonne. Donc ce n'est pas une option. (Lisez ceci dans plusieurs threads) J'utilise un TIBDataSet (ibds ci-dessous) et je filtre les données. Fonctionne bien .... pour les colonnes DB, pas pour les calculs ... Des idées de comment je pourrais contourner ce problème?Ordre DBGrid par champ calculé
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);
}
Merci pour votre réponse. Je dois encore résoudre le problème et avoir beaucoup lu et maintenant votre post ... OUI, je pense que nous allons passer à la version normale de C++ Builder! –