Entwickler-Ecke
Datenbanken - seltsamer Fehler bei Selectabfrage (FB + ZEOS)
Marienberger - Mo 20.02.06 14:19
Titel: seltsamer Fehler bei Selectabfrage (FB + ZEOS)
Hallo,
folgende SQL Abfrage funktioniert nur nach Programmstart.
Erneute Abfrage ergibt immer wieder gleiches Ergebnis obwohl sich
DB Inhalt geändert hat.
Wo könnte der Fehler liegen ?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure TForm1.FormCreate(Sender: TObject); begin Form1.ZConnection1.Database := 'Pfad zur Datenbank'; Form1.ZConnection1.HostName := 'IP des Rechners'; Form1.ZConnection1.Password := 'masterkey'; Form1.ZConnection1.Protocol := 'firebird-1.5'; Form1.ZConnection1.User := 'SYSDBA'; Form1.ZConnection1.ReadOnly := false; Form1.ZConnection1.SQLHourGlass := true; Form1.ZConnection1.Properties.Add('lc_ctype=ISO8859_1'); Form1.ZConnection1.Properties.Add('Dialect=3'); Form1.ZConnection1.Connected := true; end;
procedure TForm1.Button1Click(Sender: TObject); var SQLStrg, MDS_Kenn : String; begin SQLStrg := 'SELECT * FROM "CAM00"'; ZReadOnlyQuery1.Connection := ZConnection1; ZReadOnlyQuery1.Close; ZReadOnlyQuery1.SQL.Clear; ZReadOnlyQuery1.SQL.Add(SQLStrg); ZReadOnlyQuery1.ExecSQL; ZReadOnlyQuery1.Open; ZReadOnlyQuery1.First; while (not ZReadOnlyQuery1.Eof) do begin end; ZReadOnlyQuery1.Active := false; end; |
Vielen Dank im Voraus.
Gruß Marienberger
mkinzler - Mo 20.02.06 14:34
Das ExecSql in Zeile 24 ist unnötig.
Das erneute Setzen des Abfragestrings ist ebenfalls unnötig. Es wäre in diesem Fall besser den String im onCreate fest zu setzen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure TForm1.FormCreate(Sender: TObject); var SQLStrg, MDS_Kenn : String; begin Form1.ZConnection1.Database := 'Pfad zur Datenbank'; Form1.ZConnection1.HostName := 'IP des Rechners'; Form1.ZConnection1.Password := 'masterkey'; Form1.ZConnection1.Protocol := 'firebird-1.5'; Form1.ZConnection1.User := 'SYSDBA'; Form1.ZConnection1.ReadOnly := false; Form1.ZConnection1.SQLHourGlass := true; Form1.ZConnection1.Properties.Add('lc_ctype=ISO8859_1'); Form1.ZConnection1.Properties.Add('Dialect=3'); Form1.ZConnection1.Connected := true; SQLStrg := 'SELECT * FROM "CAM00"'; ZReadOnlyQuery1.Connection := ZConnection1; ZReadOnlyQuery1.Close; ZReadOnlyQuery1.SQL.Text := SQLStrg; end;
procedure TForm1.Button1Click(Sender: TObject); var SQLStrg, MDS_Kenn : String; begin ZReadOnlyQuery1.Open; ZReadOnlyQuery1.First; while (not ZReadOnlyQuery1.Eof) do begin ZReadOnlyQuery1.Next; end; ZReadOnlyQuery1.Close; end; |
Marienberger - Mo 20.02.06 14:44
Danke für die schnelle Antwort.
Leider ist damit das eigentliche Problem nicht gelöst.
Das Query wird im weiteren Verlauf mehrfach benutzt und
somit der SQL String mehrfach zugewiesen.
Gruß Marienberger
mkinzler - Mo 20.02.06 14:48
Eine Komponente für mehrere Queries? Und Nach Änderung des Querystrings ändert sich nach dem Open das Ergebnis nicht mehr ?
Wie sehen die anderen Abfragen aus?
Marienberger - Di 21.02.06 19:28
Hallo zusammen,
eine Komponente für mehrere Query's ist kein Problem. Habe das in anderen Programmen schon mehrfach praktiziert (Query muß vor Neuzuweisung natürlich auf "active=false" gesetzt werden).
Für die die es interessiert, mein o. g. Problem konnte ich lösen indem ich
TransactIsolationLevel von "tiNone" auf "tiReadCommitted" umstellte.
Gruß Marienberger
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!