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


Автор: Uragan 13.8.2007, 03:44
Делаю в Access базу, есть таблица счет и поля 
Оплачено(руб) Оплатить(руб) Оплачено(логическое) 
необходимо, чтобы при установке галочки оплачено, после срабатывания, запрос в поле оплачено увеличивал на цифру в поле оплатить. 
до 
Оплачено Оплатить 
1000       1000 
после 
Оплачено Оплатить 
2000       0 
что-то вроде этого? возможно ли это сделать на SQL, если возможно то подскажите пожалуйста, как? 
Я знаю что можно в запросе сделать временное поле которое будет вычислять разницу или сумму. Но мне тут необходимо чтобы поле изменялось и хранилось в базе? 
как это реализовать? 
Если невозможно на SQL, то хотя бы, как это лучше устроить на Delphi? 

Автор: Savek 13.8.2007, 08:14
Обрабатывай событие OnBeforPost в котором вноси нужные изменения
 
Код

procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
if FieldByName('Оплачено').AsBoolean then begin
   FieldByName('Оплачено').AsCurrency:=FieldByName('Оплачено').AsCurrency+ FieldByName('Оплатить').AsCurrency;
   FieldByName('Оплатить').AsCurrency:=0;
end;
end;
примерно так ...
При установке галочки в гриде сработает это событие 

Автор: pseud 13.8.2007, 11:09
Код

UPDATE
  Таблица t
SET
  t.Оплачено(руб) = t.Оплачено(руб) + t.Оплатить(руб)
  , t.Оплатить(руб) = 0
  , t.Оплачено(логическое) = True
WHERE
  t.поле_id = <id нашей записи>

  

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