AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL update, wie geht das?

SQL update, wie geht das?

Ein Thema von BBoy · begonnen am 4. Mär 2012 · letzter Beitrag vom 5. Mär 2012
Antwort Antwort
Seite 1 von 2  1 2   
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

SQL update, wie geht das?

  Alt 4. Mär 2012, 10:36
Datenbank: TurboDB • Version: 5 • Zugriff über: TurboDB
Ich füge in meine Datenbank neue Datensätze hinzu wie folgt:
Delphi-Quellcode:
 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;
Nur mit wesentlich mehr Datenfeldern als oben im Beispiel gezeigt.
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!

Geändert von BBoy ( 4. Mär 2012 um 11:50 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 10:52
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.

http://www.torsten-horn.de/techdocs/sql.htm
Markus Kinzler
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 11:36
Dieses sql liegt mir nicht, das will mir einfach nicht rein 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!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 11:51
Was verstehst Du denn jetzt nicht ? Ein Update-Befehl könnte so aussehen :
Code:
UPDATE tabelleAutor
SET Name = Otto, GebJahr = 1954, Beruf = NULL
WHERE Nr = 10;
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 11:57
ja so habe ich das auch verstanden. der unterschied ist, dass ich in meinem programm mit feldnamen in sql arbeite, also so:
 tdbquery_insert.SQL.Text := 'insert into tour (gccode,tourpos) values (:code, :tpos)' ; :code usw meine ich.
Wie setze ich das ein? So das ich die felder dann folgendermaßen füllen kann:
TdbQuery_insupd.ParamByName('TourPos').AsInteger :=
So in etwa?
Delphi-Quellcode:
UPDATE tabelleAutor
SET Name = :name, GebJahr = :gebjahr, Beruf = NULL
WHERE Nr = 10;

Geändert von BBoy ( 4. Mär 2012 um 12:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 12:11
So in etwa?
Delphi-Quellcode:
UPDATE tabelleAutor
SET Name = :name, GebJahr = :gebjahr, Beruf = NULL
WHERE Nr = 10;
Ja, jeder Wert für ein Feld kann durch einen Parameter ersetzt werden. Die Parameter können dann später genau so befüllt werden wie bei Deim INSERT INTO.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 14:14
und wie ist der syntax? Ich versuche es so und es kommt ne fehlermeldung:
update tour set TourPos= :TourPos, CacheLat= :CacheLat, CacheLon= :CacheLon
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

AW: SQL update, wie geht das?

  Alt 4. Mär 2012, 14:18
Was für eine Fehlermeldung ? Meine 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:
und wie ist der syntax? Ich versuche es so und es kommt ne fehlermeldung:
update tour set TourPos= :TourPos, CacheLat= :CacheLat, CacheLon= :CacheLon
Wo ist die Where-Abfrage ? Woher soll die Query wissen, welchen Datensatz Du ändern möchtest ? Siehe Beispiel aus Beitrag 4.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#9

AW: SQL update, wie geht das?

  Alt 5. Mär 2012, 13:58
Die Fehlermeldung: "Records must be unique with respect to 'GCCode'

Wieso muss bei einem update der index einmalig sein?

Hier meine Anweisung:
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);
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: SQL update, wie geht das?

  Alt 5. Mär 2012, 14:05
SQL-Code:
update
  logs
set
  LogId = :LogId,
  LogDate = :LogDate,
  LogType = :LogType,
  LogFinderId = :LogFinderId,
  LogFinder = :LogFinder,
  LogTextEn = :LogTextEn,
  LogText = :LogText
where
  gccode = :GCCode
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.

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
Update MyTable Set id=1 da Änderungen rein bringen, was wird dann deiner Meinung nach passieren.
Jo, jeder Datensatz bekommt also im Feld id die 1 reingedrückt. Und dann, ist dann id immer noch eindeutig, also ein PRIMARY KEY?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Mär 2012 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:17 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