![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery
AutoInc bei SQL-Insert
Hallo zusammen,
da ich jetzt endlich weis wie ich mit Queries in ne DB schreibe, tun sich auch schon die ersten Fehler auf. der Erste ist gleich mal folgender: ich habe die Felder ID Typ AUTOINC Bez Typ VarChar(100); wenn ich jetzt mit insert einen neuen DS anlege, sollte dich das Feld ID automatisch erhöht werden oder? Bei mir geschieht das nicht. Muss ich dazu noch was bestimmtes angeben? Jetzt sieht es gerade so aus. ich vermute ich muss bei Values was reinschreiben, aber was?
SQL-Code:
MfG :angel:
insert into "Artikel.db"
(ID, Bez) values (:ID, :Bez) |
Re: AutoInc bei SQL-Insert
du darfst der Query die ID nicht mitgeben, weil die automatisch erhöht wird.
|
Re: AutoInc bei SQL-Insert
ja aber wenn ich sie nicht mitgebe wird sie trotzdem nicht erhöht...
:shock: ich glaub das Problem iss nich das SQL-Statement, sondern das "Post", das funzt scheinbar nciht richtig.. der schreib garnix rein :cry: |
Re: AutoInc bei SQL-Insert
Zeig mal den ganzen Code des Inserts.
|
Re: AutoInc bei SQL-Insert
Hallo Martin,
Query und Post - vermischst du da vielleicht etwas?
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ButtonClick(Sender: TObject);
begin with Query do begin SQL.Text := 'INSERT INTO artikel(bez) values(:bez)'; Params.ParamValues['bez'] := 'es geht doch'; ExecSQL; end; with Query do begin SQL.Text := 'SELECT * FROM artikel WHERE 1 = 0'; RequestLive := true; Open; Append; FieldValues['bez'] := 'oder so'; Post; Close; end; end; |
Re: AutoInc bei SQL-Insert
Zuerst wird die Tabelle mit:
SQL-Code:
erstellt.
'CREATE TABLE "Artikel.db"('+
'ID AUTOINC,'+ 'Bez VARCHAR(10),'+ 'PRIMARY KEY(ID));'; Ich hab eine Query die mir die Tabelle öffnet und anzeigt:
SQL-Code:
Dann eine TUpdateSQL - Kompo in deren Insertteil das steht:
SELECT * FROM "Artikel.db"
SQL-Code:
(sollte reichen oder? :gruebel: )
insert into "Artikel.db"
dieser Insertteil wird - wenn ich das recht verstanden hab - automatisch bei einem Append aufgerufen. danach schreibe ich in ein DBEdit etwas rein undlöse ein Post aus. Im grid wird das Eingegebene angezeigt, allerdings steht das nicht in der physikalischen tabelle drin, Heisst: Wenn ich das Prog schliesse sind die Daten wieder weg. diese TUpdateSQL - Kompo ist der Query zugeordent. Ausserdem ist die Eigenschaft CachedUpdate = True, da sonst nur lesen ist bei der Query. UpdateMode der Query ist upWhereAll, RequestLive ist im Moment False, bringt aber nix wenn ichs auf True setze. |
Re: AutoInc bei SQL-Insert
SQL-Code:
reicht nicht. Verwende am besten die Funktion der IDE um die Querystrings richtig zu setzen. (Einfach Doppelklick auf Kompo).
insert into "Artikel.db";
|
Re: AutoInc bei SQL-Insert
Zitat:
Edit: und egal bei welcher Schlüssel / Aktualisierungs konstelation: Es geht nicht... :wall: |
Re: AutoInc bei SQL-Insert
Die Funktion der IDE ist rein "mechanisch". In diesem Fall mußt du das Feld per Hand aus Abfrage entfernen. Beim Update kannst du eigentlich auch alle Felder außer diesem aus der where-clause entfernen.
|
Re: AutoInc bei SQL-Insert
Auch wenn du das mit dem Insert Befehl jetzt hinkriegst, so wirst Du weiterhin das Problem haben, dass nach dem Posten dir die ID unbekannt bleiben wird. Der Grund, weil erst nach dem Post die ID im DB System erstellt wird, und Du in Delphi aber keinen Rückwert nach dem Post kriegst. Was da hilft ist in der Tat einfach ein Close -> Open.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz