![]() |
Datenbank: TurboDB • Version: 5 • Zugriff über: TurboDB
SQL update, wie geht das?
Ich füge in meine Datenbank neue Datensätze hinzu wie folgt:
Delphi-Quellcode:
Nur mit wesentlich mehr Datenfeldern als oben im Beispiel gezeigt.
TdbQuery_insert.DatabaseName := tdbtable1.DatabaseName;
tdbquery_insert.SQL.Text := 'insert into tour (gccode,tourpos) values (:code, :tpos)' ; tdbquery_insert.Prepare; tdbquery_insert.ParamByName('code').AsString := 'GC12149'; tdbquery_insert.ParamByName('tpos').AsString := '1'; tdbquery_insert.ExecSQL; Nun möchte ich mein Programm erweitern und es sollen vorhandene Datensätze überschrieben/aktualisiert werden. Also der aktuelle Datensatz soll überschreiben werden mit den aktuellen daten. Wie lautet in meinem Fall dazu der SQL Befehl? Danke für eure Hilfe! |
AW: SQL update, wie geht das?
Du bleibst deinem Prinzip treu, auf Grundlagenwissen komplett zu verzichten. Jedes noch so einfaches unvollständige SQL-Tutorial geht auf die die wichtigsten SQL-Befehel wie Insert, Update und Delete ein.
![]() |
AW: SQL update, wie geht das?
Dieses sql liegt mir nicht, das will mir einfach nicht rein :):oops: In den tutorials ist immer alles anders erklärt als es bei mir ist :?
Vielleicht erbarmt sich ja doch noch jemand mit dem delphi code. Wäre nett, Danke! |
AW: SQL update, wie geht das?
Was verstehst Du denn jetzt nicht ? Ein Update-Befehl könnte so aussehen :
Code:
Hier wird in der Tabelle "tabelleAutor" das Feld Name, GebJahr und Beruf vom Datensatz Nr. 10 geändert. Mit dem Wert NULL, wird der Inhalt des Feldes Beruf komplett gelöscht. Das Beispiel musst Du jetzt selber umbauen auf Deine Tabelle, wo Du einen Datensatz ändern möchtest.
UPDATE tabelleAutor
SET Name = Otto, GebJahr = 1954, Beruf = NULL WHERE Nr = 10; |
AW: SQL update, wie geht das?
ja so habe ich das auch verstanden. der unterschied ist, dass ich in meinem programm mit feldnamen in sql arbeite, also so:
Delphi-Quellcode:
:code usw meine ich.
tdbquery_insert.SQL.Text := 'insert into tour (gccode,tourpos) values (:code, :tpos)' ;
Wie setze ich das ein? So das ich die felder dann folgendermaßen füllen kann:
Delphi-Quellcode:
TdbQuery_insupd.ParamByName('TourPos').AsInteger :=
So in etwa?
Delphi-Quellcode:
UPDATE tabelleAutor
SET Name = :name, GebJahr = :gebjahr, Beruf = NULL WHERE Nr = 10; |
AW: SQL update, wie geht das?
Zitat:
|
AW: SQL update, wie geht das?
und wie ist der syntax? Ich versuche es so und es kommt ne fehlermeldung:
Delphi-Quellcode:
update tour set TourPos= :TourPos, CacheLat= :CacheLat, CacheLon= :CacheLon
|
AW: SQL update, wie geht das?
Was für eine Fehlermeldung ? Meine :glaskugel: ist heute defekt.
Du musst den Update-Befehl genau so durchführen, wie den INSERT-Befehl. Also den Update-Befehl in die Query schreiben, den Parametern die Werte zuweisen und dann ausführen. Edit: Zitat:
|
AW: SQL update, wie geht das?
Die Fehlermeldung: "Records must be unique with respect to 'GCCode'
Wieso muss bei einem update der index einmalig sein? Hier meine Anweisung:
Delphi-Quellcode:
TdbQuery_insupd.SQL.Text := 'update logs set GCCode= :GCCode, LogId= :LogId, LogDate= :LogDate, LogType= :LogType, LogFinderId= :LogFinderId, LogFinder= :LogFinder, LogTextEn= :LogTextEn, LogText= :LogText where gccode = '+QuotedStr(CName);
|
AW: SQL update, wie geht das?
SQL-Code:
So wird ein Schuh draus. Und warum soll beim Update der Index-Spalte (nach der du einschränkst) ein Wert zugewiesen werden - auch wenn es der gleiche Wert ist.
update
logs set LogId = :LogId, LogDate = :LogDate, LogType = :LogType, LogFinderId = :LogFinderId, LogFinder = :LogFinder, LogTextEn = :LogTextEn, LogText = :LogText where gccode = :GCCode Bei einem Update muss der Index nicht eindeutig sein, es wird halt bei jedem Datensatz geschrieben, der gefunden wird. ABER, wenn du in der Tabelle einen PRIMARY KEY hast (z.B. das Feld id) und willst den per
SQL-Code:
da Änderungen rein bringen, was wird dann deiner Meinung nach passieren.
Update MyTable Set id=1
Jo, jeder Datensatz bekommt also im Feld id die 1 reingedrückt. Und dann, ist dann id immer noch eindeutig, also ein PRIMARY KEY? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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-2025 by Thomas Breitkreuz