![]() |
Datenbank: Oracle • Version: 11.2.0.3.0 • Zugriff über: TSQLQuery
Gleiches SQL, 2 Datenbanken, unterschiedlicher inhalt --> gleiches ergebnis
Hallo Leute,
ich bin etwas am verzweifeln. Wir haben 2 Oracle Datenbanken --> Datenbanken sind vom Aufbau her identisch. Inhaltlich aber unterschiedlich --> 2 Mandanten Ich habe eine Funktion geschrieben, die zwei mal aufgerufen wird. Einmal mit den Daten von Datenbank1 und einmal mit den Daten von Datenbank2 Das Problem macht im folgenden Beispiel der TEil nach "//Hotfolder überprüfen" (unten in rot) die Funktion fängt so an:
Delphi-Quellcode:
fehlerausgabememo existiert, damit mir die Ausgabe direkt angezeigt wird.
function TForm1.dbtest(datenbank: TBISNPStatus): boolean;
var zaehler, i: integer; datumheute, datum: double; excel: variant; user, pass: string; begin try OracleConnection1.hostname := datenbank.gethostname; OracleConnection1.databasename := datenbank.getdatabase; OracleConnection1.password := datenbank.getpassword; OracleConnection1.UserName := datenbank.getusername; SQLTransaction1.Active := True; //langläufer finden if datenbank.langlauferfindenn then begin SQLQuery1.Close; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Text := datenbank.getlanglaeufersql; SQLQuery1.Open; zaehler := 0; while not SQLQuery1.EOF do begin zaehler := SQLQuery1.Fields[0].AsInteger; SQLQuery1.Next; end; datenbank.setlanglaeufer(zaehler); if zaehler <> 0 then begin shapessetzen(datenbank.BISNAME, 'langlaeufer', True, datenbank); logfileschreiben('Langläufer auf ' + datenbank.BISNAME + 'gefunden: ' + IntToStr(zaehler)); end else shapessetzen(datenbank.BISNAME, 'langlaeufer', False, datenbank); end; //Wartende Nachrichten finden if datenbank.WartendeNachrichtenfinden then begin SQLQuery1.Close; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Text := datenbank.getwartendenachrichtensql; SQLQuery1.Open; zaehler := 0; while not SQLQuery1.EOF do begin zaehler := SQLQuery1.Fields[0].AsInteger; SQLQuery1.Next; end; datenbank.setwartendenachrichten(zaehler); if zaehler <> 0 then begin logfileschreiben(IntToStr(zaehler)); shapessetzen(datenbank.BISNAME, 'wartendenachricht', True, datenbank); end else begin shapessetzen(datenbank.BISNAME, 'wartendenachricht', False, datenbank); end; end; [COLOR="Red"]//Hotfolder überprüfen[/COLOR] if datenbank.Hotfolderueberwachen then begin SQLQuery1.Close; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Text := datenbank.getverzeichnissql(True); SQLQuery1.open; zaehler := 0; while not SQLQuery1.EOF do begin datenbank.setverzeichnisliste(SQLQuery1.Fields[0].AsString); fehlerausgabememo.lines.add(SQLQuery1.Fields[0].AsString) ; SQLQuery1.Next; end; fehlerausgabememo.lines.add(#13#10#13#10#13#10#13#10); in den anderen IFS befindet sich ähnlicher Quellcode. Mein Problem ist jetzt, dass die Funktion mit dem ersten aufruf komplett durchläuft und er auch alles korrekt macht. Wenn er jetzt mit dem 2. Datenbank-Objekt durchläuft, macht er mir probleme. Vor dem Open habe ich mir alle Verbindungsdaten ausgeben lassen (Host, PW, User, usw.) -->Beim 2. druchlauf werden die Daten korrekt für die 2. Instance gewechselt. Das SQL selbst hat keine Verbindungsdaten getverzeichnissql enthält folgenden Code:
Delphi-Quellcode:
function TBISNPStatus.getverzeichnissql(aktiv: boolean):string;
begin if aktiv then begin result := 'select cpath from tfolderlistener where substr(cpath,0,1) not in (''x'', ''$'') and cautostart = ''Y'''; end else begin result := 'select cpath from tfolderlistener where substr(cpath,0,1) not in (''x'', ''$'')'; end; end; Das Problem ist jetzt, das er mir im 2. durchgang von //Hotfolder überprüfen das gleiche ausgibt wie beim ersten mal. Im Memo (fehlerausgabememo) wiederholen sich die 99 Einträge vom ersten mal. Das Problem habe ich bei den beiden anderen abfragen nicht. Wartende Nachrichten und Langläufer werden korrekt geprüft und ausgegeben. Folgende Komponenten werden verwendet: SQLQuery1: TSQLQuery; SQLTransaction1: TSQLTransaction; OracleConnection1: TOracleConnection; Datasource1: TDatasource; woran kann das liegen und wie kann ich das beheben? Wenn ich die SQLs in der jeweiligen Datenbank absetze bekomme ich die korrekten ergebnisse. Gruß itashadow |
AW: Gleiches SQL, 2 Datenbanken, unterschiedlicher inhalt --> gleiches ergebnis
Kann es sein, dass du die OracleConnection1 zunächst mal schließen solltest und erst dann die Eigenschaften ändern.
Es sieht so aus, als ob die Abfrage noch über die vorherige Verbindung läuft. |
AW: Gleiches SQL, 2 Datenbanken, unterschiedlicher inhalt --> gleiches ergebnis
args...
ich hatte vor kurzem wegen einem Speicherproblem von TSQLConnector auf TOracleConnection gewechselt. Im finally stand natürlich noch der TSQLConnector zum disconnecten drin... Danke. Ich brauche urlaub. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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