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


Автор: malor 1.11.2011, 18:05
Например, вы открыли форму, для того чтобы ввести поля новой записи.
Заполнили все, что требовалось. На каком событии делать запись в лог-таблицу?

При таком коде :
Код
procedure TDataModule.ADOTable1AfterPost(DataSet: TDataSet);
var
  SQLText : String;
begin

  SQLText := 'INSERT INTO log (textmessage) VALUES (''В таблицу такую-то вставлена запись. Поле такое-то равно : ' +   ADOTable1.FieldByName('name').AsString) + ''' ';

  try
    with ADOQuery1 do
    begin
      SQL.Clear;
      SQL.Add(SQLText);
      ExecSQL;
    end;
  except
     on e:Exception do
  end;

end;

вероятно и обычное редактирование уже присутствующей записи спровоцирует логирование ?

Автор: maloicds 8.11.2011, 14:22
Попробуй использовать режим работы таблицы т.е 
Код

if AdoTable1.State in [dsInsert] then

либо 
Код

with DataSet do
begin
  if State in [dsEdit,dsInsert] then
    Post;
  ApplyUpdates;
  CommitUpdates;
end;

Автор: Akella 9.11.2011, 16:48
Цитата(malor @  1.11.2011,  18:05 Найти цитируемый пост)
 На каком событии делать запись в лог-таблицу?

Если СУБД поддерживает триггеры, то я бы сделал на триггерах.

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