Вычисляемый столбец Delphi 2010 в DBGrid

У меня есть программа ADO Delphi 2010 с 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
Это работает, конечно. Но не имеет смысла, если механизм БД выполняет перевод в запросе, почему элемент управления просто не видит запрос в том виде, в котором он представлен, и не отображает значения. - person Ken Lange; 09.05.2010
comment
Это зависит от того, хотите ли вы, чтобы вычисления выполнялись Delphi или DB Engine. Если вы хотите, чтобы механизм БД делал это, перепишите свой запрос как select a, b, (a+b) as thesum from mytable. Таким образом, результат, включая расчет, выполняется механизмом БД, и нет необходимости в вычисляемом поле в delphi, однако может быть сложнее вставлять/обновлять новые данные в таблицу. В зависимости от реализации потомка TDataset он может не распознать вычисляемое поле и, таким образом, сделать ваш набор данных недоступным для обновления, но вам придется протестировать его. Выбор остается за вами. - person Brave Cobra; 10.05.2010