Отловить измененные поля

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
Ответить
DYUMON
Сообщения: 34
Зарегистрирован: Чт 05 июл 2012 05:21
Откуда: Новосибирск
Контактная информация:

Отловить измененные поля

Сообщение DYUMON » Чт 18 авг 2016 14:39

День добрый.
Использую для работы с базой данных компоненты MyDac 8.7.23.
Возник такой вопрос. В программе ведется лог работы пользователя с базой. Хотелось бы отлавливать какие именно поля он менял. При просмотре лога работы TmyQuery через dbmonitor видно что компонент при изменение полей не пихает все поля в запрос, а изменяет только нужные, хотелось бы отлавливать данные изменения из кода. Подскажите имеется ли такая возможность?

ViktorV
Devart Team
Сообщения: 202
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Отловить измененные поля

Сообщение ViktorV » Чт 18 авг 2016 16:17

Если свойство SQLUpdate установлено в пустую строку, MyDAC будет автоматически формировать необходимые SQL запросы при выполнении соответствующих операций. В таком случае, для решения вашей задачи, вы можете использовать обработчик события AfterUpdateExecute. Например:

Код: Выделить всё

procedure TForm1.MyQuery1AfterUpdateExecute(Sender: TCustomMyDataSet;
  StatementTypes: TStatementTypes; Params: TDAParams);
var
  i, j: integer;
begin
  if stUpdate in StatementTypes then
    for i := 0 to Params.Count - 1 do
      for j := 0 to Sender.FieldCount - 1 do
        if Params[i].Name = Sender.Fields[j].FieldName then
          ...
end;

Ответить