2010-05-09 3 views
1

У меня есть программа ADO Delphi 2010 с DBGrid. Его набор данных выбирает из запроса Access. Запрос имеет столбец, определяемый как CStr (Amount * UnitCount) + "" + Unit. Запрос отлично работает в Access. Но DBgrid отказывается показывать значения для этого столбцаРасчетная колонка Delphi 2010 в DBGrid

ответ

1

Вы хотите определить вычисленное поле в потоке TDataset, подключенном к вашей сетке, а затем внедрили вычисление для этого поля в событии OnCalcFields.

+0

Это работает, конечно. Но не имеет смысла, что если движок db выполняет перевод в запросе, почему элемент управления просто не видит запрос как представленный и не отображает значения. –

+0

Это зависит от того, хотите ли вы, чтобы Delphi выполнял расчет или DB Engine. Если вы хотите, чтобы механизм БД сделал это, перепишите свой запрос как «выберите a, b (a + b) в качестве суммы из mytable». Таким образом, результат, включающий в себя расчет, выполняется с помощью механизма БД, и нет необходимости в вычисленном поле в delphi, однако было бы сложнее вставить/обновить новые данные в таблице. В зависимости от реализации потомка TDataset он может не распознать вычисленное поле и, таким образом, оставить ваш набор данных неспособным к обновлению, но вам придется его протестировать. Выбор ваш. –

Смежные вопросы