AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Interbase Log-Files

Ein Thema von Werwurm · begonnen am 19. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
Seite 2 von 2     12
Werwurm

Registriert seit: 21. Apr 2003
Ort: Bremen
71 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Interbase Log-Files

  Alt 19. Feb 2006, 14:39
Hallo MrSpock,

danke für den Hinweis.
Hier bekomme ich aber nur den Zugriff auf die Server Log. Dort sind keinerlei Transactionen hinterlegt. Oder kann ich das Trace Level für diese Log erhöhen?

Kleine Anfängerfrage am Rande.
Wo finde ich die IBAdmin Demo?
In den Delphi-Beispielen befinden sich nur IBDemo und IBMasterApp (diese leider ohne DB, läuft deswegen nicht).
Gruß
Marcus
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: Interbase Log-Files

  Alt 19. Feb 2006, 17:44
Mkinzler meint folgendes : Du sollst erst mal die Trigger benutzen. Damit sind die Fälle Insert / Update / Delete bereits erledigt. Was fehlt, das sind die Selects. Allerdings ist jetzt die Frage, wo diese zusammengebaut werden. Und IMHO geht der Vorschlag von MKinzler mit SP an der Stelle etwas zu weit. Bzw. geht das meistens auch einfacher. Man stelle sich einmal folgendes vor : brauche Artikel-Liste von / bis Art.Nr. Sortierung nach Bez. usw. Jetzt gibt es dazu 2 Möglichkeiten : ich baue das Select im Programm zusammen. Das würde bei der Sortierung folgendes bedeuten :

Delphi-Quellcode:
if ckbAlpha = checked then
  DS.SelectSQL.Add ('ORDER BY BEZ')
else
  DS.SelectSQL.Add ('ORDER BY NR');
Über SP ginge es eben so :

Delphi-Quellcode:
if ckbAlpha = checked then
  ArtSP.ParamByName ('SORTIERUNG') := 1
else
  ArtSP.ParamByName ('SORTIERUNG') := 0;
In diesem Falle müßte ich noch in der SP die 0/1 auswerten usw. Man bedenke, daß das Bsp. dazu noch sehr einfach ist !

Habe ich nun folgende Konstruktion :

Delphi-Quellcode:
procedure SchreibeLog (st : string);
begin
  LogMod.LogSP.ParamByName('ID_STATION').AsInteger := ID_StationNr;
  LogMod.LogSP.ParamByName('ZEIT').AsDateTime := now;
  LogMod.LogSP.ParamByName('ST').AsString := st;
  if not CDStart then begin
    LogMod.LogSP.ExecProc;
    LogMod.LogTransaction.Commit; // zu oft ?
    LogMod.LogTransaction.StartTransaction;
  end;
end;
dann kann ich an allen Stellen etwas in ein Log schreiben. Egal was ! z.B.:

Delphi-Quellcode:
SchreibeLog ('Programmstart '+DateTimeToStr (now));
...
// ACHTUNG ! nur Pseudocode, string <> TStrings !

SchreibeLog (DS.SelectSQL.Text); // festhalten welche Sortierung per Dataset

SchreibeLog (ArtSP.SQL.Text); // festhalten welche Sortierung per SP
Aber egal wie, fällt mir gerade ein, was ist mit Parametern ? "ORDER BY BEZ" würde ja in dem Log stehen, aber ":VONARTNR" auch und nicht der Wert. 8) Na ja, die selects sind mir ziemlich egal, ich will eigentlich nur wissen, wann wer an welchem Datensatz rumfummelt.

Und noch ein Trick : oben steht die Zeit der Aktion mit drin (bei Programmstart). Das kann man sich auch sparen. In das Log wird ja wohl nur inserted. Also genügt es, dem Insert Trigger zu sagen, daß er gleich noch die Zeit automatisch mitspeichert. Obige Prozedur ist fast unverzichtbar, bei dem Einkreisen schwierig zu findender Fehler. Ich kann ja auch reinschreiben "Menüpunkt x angewählt" oder "Menüpunkt x verlassen" In dem Log sehe ich dann ganz genau in zeitlicher Abfolge wo wann was dazwischen gemacht wurde. Welche Tabellen angesprochen wurden, welche Records betroffen waren usw. Wenn nun z.B. der Logeintrag "Menüpunkt x verlassen" nicht vorhanden ist, dann ist völlig klar, das ein schwerer Fehler passiert ist und wenns nur der gezogene Stecker war. Auf jeden Fall aber sehe ich noch die letzte Aktion davor. Deshalb auch das Commit innerhalb der Prozedur.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.802 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Interbase Log-Files

  Alt 19. Feb 2006, 18:46
Zitat von hansa:
Und IMHO geht der Vorschlag von MKinzler mit SP an der Stelle etwas zu weit.
@hansa: da hast du u.U recht. Ich persönlich versuche aber so viel wie möglich meiner Programmlogik in SP's abzuwickeln, und in diesem Fall ist die Erweiterung auf einen Logmechanismus kein Problem.
In diesem Fall kommt es auch auf die komplexität der Abfrage an: z.B. läßt sich Select * from Tabelle where id=:wert; leicht in select * from spTabelle (:wert); abwandeln. natürlich geht das nur bei einfachen Abfragen bzw. einem bis wenige Parameter.
Markus Kinzler
  Mit Zitat antworten Zitat
Werwurm

Registriert seit: 21. Apr 2003
Ort: Bremen
71 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Interbase Log-Files

  Alt 22. Feb 2006, 21:13
@Hansa:
Habe Deinen Ansatz umgesetzt. Hat im vollen Maße so funktioniert wie ich es mir vorgestellt hatte.
Vielen Dank für die Hilfe
Gruß
Marcus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf