Страница 1 из 1

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

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

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

Добавлено: Чт 18 авг 2016 16:17
ViktorV
Если свойство 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;