Einzelnen Beitrag anzeigen

mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#7

Re: db änderungen protokollieren. aus delphi heraus. (IB)

  Alt 4. Jun 2006, 01:24
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
Muh macht die kUh
  Mit Zitat antworten Zitat