Autor Beitrag
Marienberger
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 20.02.06 14:19 
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 ?

ausblenden volle Höhe 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
  // Parameter Datenbank local
  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
    {Anweisungen}
  end;
  ZReadOnlyQuery1.Active := false;
end;


Vielen Dank im Voraus.
Gruß Marienberger
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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.

ausblenden volle Höhe 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
  // Parameter Datenbank local
  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
    {Anweisungen}
    ZReadOnlyQuery1.Next;
  end;
  ZReadOnlyQuery1.Close;
end;

_________________
Markus Kinzler.
Marienberger Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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?

_________________
Markus Kinzler.
Marienberger Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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