Entwickler-Ecke

Datenbanken - ZEOS + Query.ApplyUpdates = Fehler


matze.de - Mo 29.05.06 22:41
Titel: ZEOS + Query.ApplyUpdates = Fehler
Hi,

Ich benutze FireBird 1.5 Embedded mit den ZEOS Komponenten. Ich habe ein, für mich, sehr seltsames Problem. Ich habe eine DBLookUpListBox und ein DBEdit Die mit den richtigen Feldern und Datasets verbunden sind. Diese zeigen bei mir auch Daten an. Wenn ich aber nun in meinem DBEdit einen Datensatzt, welchen ich aus der ListBox gewählt habe editiere und auf meinen "ÜbernehmenButton"

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Procedure TFahrerForm.Btn_FahrerOkClick(Sender: TObject);
Begin
    MainForm.Dataset.ApplyUpdates;
    MainForm.Dataset.CommitUpdates;
    Close;
End;
drücke, bekomme ich die Fehlermeldung "SQL Error: Dynamic SQL Error SQL Error Code:-104 Unexpected End of Command. Error Code:-104 Invalid Token"

Mein Programm führt vom Programmstart bis zum Fehler folgenden relevanten Source aus:

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:
34:
35:
36:
    Connection := TZConnection.Create(self);

    Dataset := TZQuery.Create(self);
    Dataset.Connection := FConnection;
    //Dataset.RequestLive := True;
    Dataset.CachedUpdates := True;
    Dataset.ReadOnly := False;

    MyDataSource.DataSet := FDataset;

    UpdateDataset := TZUpdateSQL.Create(self);
    Dataset.UpdateObject := FUpdateDataset;

    Connection.Protocol := 'firebird-1.5';
    Connection.Database := GetHomeDir + 'MYDB.FDB';
    Connection.User := 'USER';
    Connection.Password := 'PW';
    Connection.ReadOnly := False;
    Connection.TransactIsolationLevel := tiReadCommitted;

    Connection.Connect;

    DBLkU_Fahrer.ListSource := MainForm.MyDataSource;
    DBLkU_Fahrer.ListField := 'FAHRERNAME';
    DBLkU_Fahrer.KeyField := 'FID';
    DBEd_Name.DataSource := MainForm.MyDataSource;
    DBEd_Name.DataField := 'FAHRERNAME';

    Dataset.SQL.Text := 'SELECT * FROM Fahrer ORDER BY FID ASC;';
    Dataset.Open; // Meine Daten werden angezeigt

    // Hier Editiere ich meine Daten in der DBEdit Kompo

    Dataset.ApplyUpdates; // Hier kommt die Exception
    Dataset.CommitUpdates;
    [...]



mfg matze


raiguen - Di 30.05.06 15:28

Moin :)

Quelltext
1:
    Dataset.SQL.Text := 'SELECT * FROM Fahrer ORDER BY FID ASC;';                    

Würde so auf den ersten Blick sagen, dass das ; die Ursache des Fehlers sein könnte :gruebel: Macht der Gewohnheit, am Ende einer Zeile bzw Statemnets ein Semikolon zu setzen (ist mir auch schon passiert...) ;)


matze.de - Di 30.05.06 17:54

user profile iconraiguen hat folgendes geschrieben:
Moin :)

Quelltext
1:
    Dataset.SQL.Text := 'SELECT * FROM Fahrer ORDER BY FID ASC;';                    

Würde so auf den ersten Blick sagen, dass das ; die Ursache des Fehlers sein könnte :gruebel: Macht der Gewohnheit, am Ende einer Zeile bzw Statemnets ein Semikolon zu setzen (ist mir auch schon passiert...) ;)


Leider war es das nicht :/ Er zeigt die Daten des Select-Statements ja auch richtig an, nur wenn sie editiert worden sind und dann per

Delphi-Quelltext
1:
2:
Dataset.ApplyUpdates;
Dataset.CommitUpdates;

gespeichert werden sollen, bekomme ich die Exception.

mfg matze


matze.de - Di 30.05.06 18:38

Ich glaube ich habe den Fehler nun gelöst, weiß aber immernoch nicht warum er auftritt vllt könnt ihr mir das erklären :) Ich hab einfach die TUpdateQuery rausgenommen, da sie in meinem Quelltext noch unnötig war, und siehe da, es funktioniert.

mfg matze