Delphi 2010 Изчислена колона в DBGrid

Имам програма Delphi 2010 ADO, която има DBGrid. Неговият набор от данни избира от заявка на Access. Заявката има колона, дефинирана като CStr(Amount*UnitCount)+" "+Unit. Заявката работи добре в Access. Но DBgrid отказва да покаже стойностите за тази колона


person Ken Lange    schedule 09.05.2010    source източник


Отговори (1)


Ще искате да дефинирате изчислено поле в наследника на TDataset, който е свързан с вашата мрежа, и след това да приложите изчислението за това поле в събитието OnCalcFields.

person Brave Cobra    schedule 09.05.2010
comment
Това работи, разбира се. Но няма смисъл, че ако db машината прави превода в заявката, защо контролата просто не вижда заявката, както е представена, и не показва стойностите. - person Ken Lange; 09.05.2010
comment
Това зависи от това дали искате Delphi да направи изчислението или DB Engine. Ако искате DB машината да го направи, тогава пренапишете вашата заявка като изберете a, b, (a+b) като сума от mytable. По този начин резултатът, включително изчислението, се извършва от DB машината и няма нужда от изчисленото поле в delphi, но може да е по-трудно да вмъкнете/актуализирате нови данни в таблицата. В зависимост от внедряването на наследника на TDataset, той може да не разпознае изчисленото поле и по този начин да остави вашия набор от данни без възможност за актуализиране, но ще трябва да тества този. Изборът е твой. - person Brave Cobra; 10.05.2010