Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Логирование вставки и редактирования записи у определенных таблиц БД  (Прочитано 4046 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malor
Опытный

ru
Offline Offline

« : 02-11-2011 06:04 » 

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

При таком коде :
Код: (Delphi)
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;
пожалуй и обычное редактирование уже присутствующей записи спровоцирует логгирование ?
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #1 : 02-11-2011 06:18 » 

Если надо логировать именно добавление новой записи, то используй событие AfterInsert
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 02-11-2011 07:14 » 

А на уровне триггеров это не реализуемо?
Записан

С уважением, Oldy.
malor
Опытный

ru
Offline Offline

« Ответ #3 : 02-11-2011 08:21 » 

Код: (Delphi)
procedure TForm1.InsertBranch();
begin
  DataModule1.ADOTableBranch.Append;
  FormEditBranch.Caption := 'Вставка филиала';

  FormEditBranch.ShowModal();
  // На форме человек нажал кнопку отмена

  DataModule1.ADOTableBranch.Refresh;

end;

Функция Append вставила заготовку(пустую запись), в это момент сработает триггер. Но еще ж нет информации которую он бы хотел занести в лог-таблицу...
« Последнее редактирование: 02-11-2011 08:24 от malor » Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 02-11-2011 08:39 » new

Значит нельзя допускать создания пустой записи, что и есть "контроль достоверности данных".
Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines