У меня есть программа ADO Delphi 2010 с DBGrid. Его набор данных выбирает из запроса Access. В запросе есть столбец, определенный как CStr(Amount*UnitCount)+" "+Unit. Запрос отлично работает в Access. Но DBgrid отказывается показывать значения для этого столбца
Вычисляемый столбец Delphi 2010 в DBGrid
Ответы (1)
Вы захотите определить вычисляемое поле в потомке TDataset, который подключен к вашей сетке, а затем реализовать вычисление для этого поля в событии OnCalcFields.
person
Brave Cobra
schedule
09.05.2010
Это работает, конечно. Но не имеет смысла, если механизм БД выполняет перевод в запросе, почему элемент управления просто не видит запрос в том виде, в котором он представлен, и не отображает значения.
- person Ken Lange; 09.05.2010
Это зависит от того, хотите ли вы, чтобы вычисления выполнялись Delphi или DB Engine. Если вы хотите, чтобы механизм БД делал это, перепишите свой запрос как select a, b, (a+b) as thesum from mytable. Таким образом, результат, включая расчет, выполняется механизмом БД, и нет необходимости в вычисляемом поле в delphi, однако может быть сложнее вставлять/обновлять новые данные в таблицу. В зависимости от реализации потомка TDataset он может не распознать вычисляемое поле и, таким образом, сделать ваш набор данных недоступным для обновления, но вам придется протестировать его. Выбор остается за вами.
- person Brave Cobra; 10.05.2010