im trying to log record changes using Myquery's BeforePost event; but i cant make it to work, the event never gets executed.
Here's my code on the event:
Code: Select all
procedure TFpagos.MyqinsertaBeforePost(DataSet: TDataSet);
var
x : integer;
xname : string;
xvalnuevo : string;
xvalviejo : string;
begin
for x:=0 to (MyQinserta.Fields.Count-1) do
begin
xname := MyQinserta.Fields.Fields[x].FullName;
if (MyQinserta.Fields.Fields[x].DataType = ftdatetime) or (MyQinserta.Fields.Fields[x].DataType = ftdate) or (MyQinserta.Fields.Fields[x].DataType = fttime) then
begin
if MyQinserta.Fieldbyname(xname).OldValue = null then
xvalviejo := ''
else
xvalviejo := Datetimetostr(MyQinserta.Fieldbyname(xname).OldValue);
if MyQinserta.Fieldbyname(xname).NewValue = null then
xvalnuevo := ''
else
xvalnuevo := Datetimetostr(MyQinserta.Fieldbyname(xname).NewValue);
end;
if (MyQinserta.Fields.Fields[x].DataType = ftsmallint) or (MyQinserta.Fields.Fields[x].DataType = ftinteger) or (MyQinserta.Fields.Fields[x].DataType = ftlargeint) then
begin
if MyQinserta.Fieldbyname(xname).OldValue = null then
xvalviejo := ''
else
xvalviejo := Inttostr(MyQinserta.Fieldbyname(xname).OldValue);
if MyQinserta.Fieldbyname(xname).NewValue = null then
xvalnuevo := ''
else
xvalnuevo := Inttostr(MyQinserta.Fieldbyname(xname).NewValue);
end;
if (MyQinserta.Fields.Fields[x].DataType = ftfloat) or (MyQinserta.Fields.Fields[x].DataType = ftcurrency) then
begin
if MyQinserta.Fieldbyname(xname).OldValue = null then
xvalviejo := ''
else
xvalviejo := Floattostr(MyQinserta.Fieldbyname(xname).OldValue);
if MyQinserta.Fieldbyname(xname).NewValue = null then
xvalnuevo := ''
else
xvalnuevo := Floattostr(MyQinserta.Fieldbyname(xname).NewValue);
end;
if (MyQinserta.Fields.Fields[x].DataType = ftstring) then
begin
if MyQinserta.Fieldbyname(xname).OldValue = null then
xvalviejo := ''
else
xvalviejo := MyQinserta.Fieldbyname(xname).OldValue;
if MyQinserta.Fieldbyname(xname).NewValue = null then
xvalnuevo := ''
else
xvalnuevo := MyQinserta.Fieldbyname(xname).NewValue;
end;
If MyQuery1.Fieldbyname(xname).NewValue <> MyQuery1.Fieldbyname(xname).oldValue Then
Dm.Bitacora('Editor de registros','Cambio dato de pago '+xname+' va:'+xvalviejo+' nv:'+xvalnuevo,'Record :'+inttostr(MyQuery1.RecNo),MyQuery1.SQL.text);
end;
end;Im tried with INSERT and UPDATE.
Im using delphi 7 and Mydac 7.1.4
TIA