hi mkinzler.
ja. ich will nur die änderungen protokollieren.
ich habe zwar bereits eine (halb)lösung gefunden aber sag mir bitte was du meinst.
hier meine lösung:
in delphi den IBSQLMonitor benutzen und dann bei event auf die Prozedur WriteUserLosg(text) weisen.
Die prozedur sieht dann so aus:
Delphi-Quellcode:
procedure TfmMain.writeUserLOG(msg:String);
var s , datei: String;
tf,f : TextFile;
pos:Integer;
erg:String;
begin
if ((StrPos(PChar(UpperCase(msg)), PChar('INSERT'))<>nil) or (StrPos(PChar(UpperCase(msg)), PChar('UPDATE'))<>nil)) then
begin
AssignFile(tf, 'user_log.txt');
Append(tf);
msg:=StringReplace(msg, '[Execute]', '[Execute] */'+#13, [rfReplaceAll]);
end else exit;
Write(tf, '/*: '+DateToStr(date())+' '+FormatDateTime('hh:mm:ss', Now)+' '+
trim(AktUser.name)+' '+trim(AktUser.vorname)+' UserID:'+
IntToStr(AktUser.userid)+':'+#13#10+msg+';'+#13+#13);
CloseFile(tf);
end;
das klappt soweit ganz gut solange ich keine parameter benutze.
bei benutzung von parametern sehe ich zwar die zustandsänderungen aber ich kann diese dann nicht mehr in einen skrip kopieren und dann einfach ausführen lassen. (würde ich gerne als eine weitere schutzmaßname vor dem worstCase).
so sieht der output der procedur aus:
Zitat:
/*: 04.06.2006 01:31:13 Name Vorname UserID:1:
[Application: zzzzz]
sql_exec: [Execute] */
INSERT INTO RECHNUNGEN (R_DATUM, VP, ZAHLART, KND_ID) VALUES('04.06.2006', '1', 'Bar-Zahlung', NULL)
;
und mit parametern:
Zitat:
/*: 03.06.2006 18:56:54 Name Vorname UserID:1:
[Application: zzzzz]
dts_kunden: [Execute] */
UPDATE KUNDEN
SET KND_NAME=:KND_NAME,
KND_VORNAME=:KND_VORNAME,
KND_STRASSE=:KND_STRASSE,
KND_PLZ=:KND_PLZ,
KND_ORT=:KND_ORT,
KND_TEL=:KND_TEL,
KND_FAX=:KND_FAX,
KND_MOBIL=:KND_MOBIL,
KND_SUPER=:KND_SUPER,
KND_GEW_VON=:KND_GEW_VON,
KND_KOMMENTAR=:KND_KOMMENTAR
WHERE KND_ID=:KND_ID
KND_NAME = 234234
KND_VORNAME = 234234
KND_STRASSE = 234
KND_PLZ = 342
KND_ORT = 423
KND_TEL = 23
KND_FAX = 23
KND_MOBIL = 23
KND_SUPER = 1
KND_GEW_VON = 1
KND_KOMMENTAR = <BLOB>
KND_ID = 1;
mfg