Einzelnen Beitrag anzeigen

ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#1

Gelöst: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 09:46
Datenbank: Sqlite • Version: 3 • Zugriff über: Zeos
Hallo,

folgendes Problem: ich habe eine Sqlite-Datenbank, auf die ich mit einer ZConnection zugreife. Die Abfragen mache ich mit ZQuery, die Ergebnisse davon stecken in einer TDatasource-Komponente.
Nun habe ich das DBGrid auf meinem Formular durch ein StringGrid ersetzt, da zu viele Formatierungen der Datenbankfelder durchgeführt werden müssen und ich generell mehr Kontrolle über den Inhalt habe. Die TDatasource-Kompo benötige ich nun eigentlich nicht mehr, oder?

Mein eigentliches Problem: ich möchte bei Bedarf ein neues Feld in der Datenbank anlegen und dieses per Grid editieren.
Das Anlagen habe ich so gelöst:
Delphi-Quellcode:
if NOT ColumnExists(ZQuery1, 'newField', 'myTable') then begin
    ZQuery1.Close;
    ZQuery1.SQL.Text := 'ALTER TABLE "myTable" ADD COLUMN "newField" TEXT';
    ZQuery1.ExecSQL;
end;
Das funktioniert auch problemlos. Nun möchte ich aber anschließend direkt den neuen Inhalt in das Feld "newField" schreiben. Versuch:
Delphi-Quellcode:
if NOT ZConnection1.Connected then exit;

ZQuery1.SQL.Text := 'SELECT newField FROM "myTable";';
ZQuery1.Active := true;

ZQuery1.CachedUpdates := True;
ZQuery1.First;
ZQuery1.Edit;
ZQuery1.FieldByName('newField').AsString := StringGrid1.Cells[ACol, ARow];
ZQuery1.Post;
Ich bekomme keine Fehlermeldung, aber die Daten werden auch nicht übernommen. ZConnection hat die Eigenschaft Readonly = False, ZQuery ebenso.
Habe ich was übersehen?

Geändert von ernschd (10. Mär 2015 um 10:31 Uhr)
  Mit Zitat antworten Zitat