AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Gelöst: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von ernschd · begonnen am 10. Mär 2015 · letzter Beitrag vom 10. Mär 2015
Antwort Antwort
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
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 09:51
Ich habe die Erfahrung gemacht, dass ein Update nicht funktioniert, wenn keine eindeutigen Felder selektiert wurden. Deswegen würde ich das select-Statement durch die eindeutige ID erweitern.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ernschd

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

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 09:57
Ja, normalerweise schon, aber die Tabelle enthält nur eine Zeile (ohne ID).
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:02
Interessante Konstellation für eine DB-Tabelle, x Spalten aber nur eine Zeile . Na egal, bleibt immer noch ein select *, das man hier einsetzen könnt.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ernschd

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

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:11
Ich habe mehrere Tabellen (z.B. Nutzer) mit mehreren Zeilen, und eben eine Tabelle mit Stammdaten, in denen nur eine Zeile enthalten ist. Wieso ist das eine interessante Konstellation?
Wobei das eigentlich egal ist, hat ja nichts mit meinem Problem zu tun.
Das Select * ändert auch nichts daran, dass die Werte nicht übernommen werden.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:22
Normalerweise wird kein alter table gemacht, wenn ein Benutzer Daten erfasst, sondern eben ein Datensatz in eine DB-Tabelle eingefügt. Was beinhaltet denn diese Tabelle?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ernschd

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

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:24
Anzahl Nutzer, Adresse, Bemerkungen und solche allgemeinen Informationen (Stammdaten).
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:26
Aber zum Thema zurück. Wenn du CachedUpdates = true setzt, benötigst du nach dem post glaube ein ApplyUpdates um die Daten dann tatsächlich in die DB zu schreiben.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ernschd

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

AW: Zeos, Stringgrid und Datasource: wie Feld bearbeiten?

  Alt 10. Mär 2015, 10:30
Das war's! Wunderbar, danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz