2010-05-09 10 views
1

J'ai un programme Delphi 2010 ADO qui a un DBGrid. Son ensemble de données sélectionne à partir d'une requête Access. La requête a une colonne définie comme CStr (Amount * UnitCount) + "" + Unit. La requête fonctionne correctement dans Access. Mais DBgrid refuse d'afficher les valeurs de cette colonneDelphi 2010 Colonne calculée dans DBGrid

Répondre

1

Vous devez définir un champ calculé dans le descendant TDataset connecté à votre grille, puis implémenter le calcul de ce champ dans l'événement OnCalcFields.

+0

Cela fonctionne, bien sûr. Mais cela n'a pas de sens que si le moteur db fait la traduction dans la requête, pourquoi le contrôle ne voit tout simplement pas la requête comme présentée et affiche les valeurs. –

+0

Cela dépend si vous souhaitez que Delphi effectue le calcul ou le moteur de base de données. Si vous voulez que le moteur de base de données le fasse, alors réécrivez votre requête comme "sélectionnez a, b, (a + b) comme thesum de mytable". De cette façon, le résultat incluant le calcul est fait par le moteur DB et il n'y a pas besoin du champ calculé dans delphi, cependant il pourrait être plus difficile d'insérer/mettre à jour de nouvelles données dans la table. En fonction de l'implémentation du descendant TDataset, il se peut qu'il ne reconnaisse pas le champ calculé et ne laisse donc pas votre base de données à jour, mais il devra tester celui-ci. Le choix t'appartient. –

Questions connexes