Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как заставить калькулятивное поле сохраняться в БД


Автор: Delphist 15.9.2009, 17:20
Что-то я запарился, или старею  smile . Вообщем возникла не совмес стандартная ситуация, при разных режимах работы программы, одно и тоже поле в DataSet'e у меня может быть как fkData а в другом случае как fkCalculated. В обоих случаях за этим полем закреплено физическое поле БД. С fkData все понятно заносим в UpdateSQL sql-text типа:
Код

  update price_value
  set 
      price_id = :price_id,
      remainder = :remainder,
      income=:income,
      ...
  where (pv_id = :pv_id);


А вот как быть в случае с fkCalculated, как заставить автоматически изменяться значение в БД при пересчете его в программе? Делал так, но не помагло:
Код

procedure TMyForm.MyDataSetBeforeOpen(DataSet: TDataSet);
begin
  with DataSet do
  begin
     FieldByName('remainder').Value := FieldByName('income').Value - FieldByName('expense').Value;
     QUpdate.ExecQuery; //добавил эту строку, но толку мало.
   end;
end;

Автор: dvamaster 22.9.2009, 13:46
проще сделать в отдельном запросе обновление

чтобы поле обновилось, датасет должен быть переведен в режим редактора
поле должно поменяться
датасет должен отправить данные
И в датасете должено присутствовать физическое поле соотвественно с другим именем

геморой

повторюсь
Цитата
проще сделать в отдельном запросе обновление

и отобразить реальное поле, залочив его от изменений

Автор: Akella 22.9.2009, 16:17
Цитата
калькулятивное 

Может вычисляемое?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)