![]() |
Datenbank: FB • Version: 2.5 • Zugriff über: IB-Componenten
Wie verwendet man TIBSQLMonitor?
Hi,
ich steh grade irgendwie auf dem Schlauch. Ich möchte alle SQL-Abfragen in meiner Anwendung mitloggen. Dazu wollte ich TIBSQLMonitor verwenden. Erste Frage: Ist das die richtige Komponente dafür? Zweite Frage: Muss ich die Database irgendwo angeben? Ich hab kein Feld gefunden, wo die reingehört. Letzte Frage: Was ist an meinem Code falsch:
Delphi-Quellcode:
In dem Memo tut sich absolut nichts.
procedure TFMain.IBSQLMonitor1SQL(EventText: string; EventTime: TDateTime);
begin Memo1.Lines.Add(Eventtext); end; Das event wird garnicht ausgelöst. Alle TraceFlags sind auf True, Enabled ist auf True... PS: Die Anwendung funktioniert soweit, ich will sie nur optimieren. Danke schonmal und schönes Wochenende. |
AW: Wie verwendet man TIBSQLMonitor?
Hallo Tobinator,
Die Komponente ist richtig: 1. Im Ereignis OnSQL der Monitorkomponente hast Du ja bereits den Befehl Memo1... eingetragen 2. Die gewünschten TraceFlags auf True schalten und Enabled := True setzen 3. In der Kompo IBDatabase ebenfalls die entsprechenden TraceFlags setzen Das reicht an Eingaben. Viel Erfolg! Echtet |
AW: Wie verwendet man TIBSQLMonitor?
Ah, cool danke, es funktioniert. Punkt 3 war der entscheidende.
Ein Problem gibt es aber immernoch: Im Memo sind nur Leerzeilen, und im EventText steht zimlicher Müll:
Code:
Ich würde das mal als
#$D#0#$A#0'['#0'A'#0'n'#0'w'#0'e'#0'n'#0'd'#0'u'#0'n'#0'g'#0':'#0' '#0']'#0#$D#0#$A
Code:
interpretieren. Muss ich da noch irgendwas umstellen oder gibt es eine Funktion, die mir das übersetzt oder muss ich mir da selber was basteln?
[Anwendung: ]
|
AW: Wie verwendet man TIBSQLMonitor?
Hi!
Da du Firebird 2.5 einsetzt, kannst du das Ganze über die neue Trace API auch unabhängig von deiner Client-Anwendung mittracen. Siehe mein Artikel hier: ![]() Bzw. FB TraceManager als Front-End für die Trace API: ![]() |
AW: Wie verwendet man TIBSQLMonitor?
Hallo...
Zitat:
Folgende Schritte: - SQLMonitor auf DataModule gepappt - Host, Port eingestellt - Active:= True - Event OnSQL
Delphi-Quellcode:
- Anwendung starten
procedure Tdm.ibcsqlmntr1SQL(Sender: TObject; Text: string; Flag: TDATraceFlag);
begin FMain.mmo1.Lines.Add(Text); end; Ergebnis:
Delphi-Quellcode:
[Ironie]
Connect: SYSDBA@Firma-Server
Start: select ID_STORE, STORE_NAME from STORES order by STORE_NAME select * from USERS where ID_STORE = :IDS order by USERNAME :IDS(INTEGER)=2 select * from USERS where ID_STORE = :IDS or ID_STORE = 0 order by USERNAME :IDS(INTEGER)=2 . . . ...hast du vieleicht eine chinesische Raubkopie :lol: [/Ironie] Sorry... Du sprachst von IB Komponenten, ich von IBDAC. Wer lesen kann ist klar im Vorteil. :oops: Nachtrag: auf die schnelle IBSQLMonitor probiert. Da bekomme ich zumindest normale Zeichen.
Delphi-Quellcode:
[Anwendung: ]
ibdtbs1: [Verbindung]72 Your user name and password are not //und hier hört der Text wirklich auf |
AW: Wie verwendet man TIBSQLMonitor?
hi,
@tsteinmaurer: ich möchte es aber gerne im Client haben, weil ich damit noch was vor hab. Aber ich werde es mir trotzdem mal angucken, vllt. krige ich ja was zusammengebastelt. @haentschman: danke, das du es mal probiert hast. Welche delphi-version hast du? Ich hab D2009. Ich hab auch hier im Forum gelesen, der das selbe Problem hatte. Der hat es dann über eine eigene Funktion gelöst. Dann wird mir wohl nichts weiter übrig bleiben als mir eine Übersetzerfunktion zu schreiben. Danke nochmal. |
AW: Wie verwendet man TIBSQLMonitor?
Hallo,
viell. ein Unicode-Problem ? Was passiert, wenn du von Hand aus String AnsiString machst ? Oder halt den String umformst ?
Delphi-Quellcode:
procedure TFMain.IBSQLMonitor1SQL(EventText: ansistring; EventTime: TDateTime);
Heiko |
AW: Wie verwendet man TIBSQLMonitor?
Hi,
danke, aber ich habs jetzt anders gelöst:
Delphi-Quellcode:
procedure TFMain.IBSQLMonitor1SQL(EventText: string; EventTime: TDateTime);
function MyTranslate(Text:String):String; var i:integer; begin result:=''; for i := 0 to length(Text) - 1 do if (ord(Text[i])>31) then result:=result+Text[i]; end; begin Memo1.Lines.Add(MyTranslate(Eventtext)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz