@Frühlingsrolle
baumina hat folgendes geschrieben : |
ZQuery1.Active := true; ist das Gleiche wie ZQuery1.Open;.
Wenn du ZQuery1.ExecSQL; verwendest, dann darfst du kein ZQuery1.Active := true; mehr machen. |
Der Hintergrund ist folgender:
ExecSQL führt einen SQL-Befehl aus, der keine Datenmenge zurückliefert.
Open bzw. Active := True setzen eine zuvor selektierte Datenmenge aktiv, so daß sie dem Programm zur weiteren Bearbeitung zur Verfügung steht.
Delete ist z.B. ein SQL-Befehl, der keine Datenmenge zurückliefert, wird also mit ExecSQL gestartet.
Select liefert eine Datenmenge zurück und benötigt daher Open.
Update und Insert sind wieder SQL-Befehle, die keine Datenmenge zurückliefern.
So kann man sich orientieren, ob nun Open bzw. Active := True oder ExecSQL angesagt sind.
Frühlingsrolle hat folgendes geschrieben : |
Beim Versuch eine Spalte nachträglich hinzuzufügen:
SQL-Anweisung 1: 2:
| ALTER TABLE tbl_Test ADD COLUMN (Nachname VARCHAR(20)) // oder ALTER TABLE tbl_Test ADD COLUMN Nachname AS VARCHAR(20) |
bekomme ich erneut die Fehlermeldung:
Quelltext 1:
| SQL Error: SQL logic error or missing database |
Woran kann es liegen? |
Das Dataset oder Query hat womöglich keine Verbindung zur Datenbank. Du mußt dem Query, das du dazu verwendest, eine SQL-Anweisung an die DB zu senden, auch die entsprechende DB-Connection-Komponente zuweisen. Letztere muß aktiv sein, bevor du ExecSQL aufrufst.