Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO SQL UPDATE (https://www.delphipraxis.net/133655-ado-sql-update.html)

thiagojonas 6. Mai 2009 13:58

Datenbank: Accsses • Zugriff über: ADO

ADO SQL UPDATE
 
Hallo Leute,
ich habe ein komisches Problem :-D

Also ich Update mit ADOQuery meine Werte in der DB.

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'UPDATE `Profil` SET `Anrede` = '''+geschlecht+''','+
  '`Vorname`='''+vorname.Text+''','+
  '`Nachname`='''+nachname.Text+''','+
  '`Alter`='''+birthday+''','+
  '`Strasse`='''+strasse.Text+''' WHERE `Profil_ID` = '''+main_win.profil_ID+''';';
  ADOQuery1.ExecSQL;
Bei main_win.profil_ID bekommen ich eine Fehlermeldung:
profil_ID habe ich unter publich als string deklariert und mit ShowMessage wird es angezeigt, also kann es nicht daran liegen, dass der Wert nicht geladen wird.

Zitat:

Im Projekt Valho_Student.exe ist eine Exception der Klasse EOleException mit der Meldung 'Datentypen in Kriterienausdruck unverträglich' aufgetreten.
Wenn ich main_win.profil_ID durch eine vorhandenen ID Wert in der DB ersetzte dann klappt es.

Delphi-Quellcode:
ADOQuery1.SQL.Text := 'UPDATE `Profil` SET `Anrede` = '''+geschlecht+''','+
  '`Vorname`='''+vorname.Text+''','+
  '`Nachname`='''+nachname.Text+''','+
  '`Alter`='''+birthday+''','+
  '`Strasse`='''+strasse.Text+''' WHERE `Profil_ID` = ''2'';';
  ADOQuery1.ExecSQL;
Vielleicht kann mir einer weiterhelfen. Danke :-D

DeddyH 6. Mai 2009 14:34

Re: ADO SQL UPDATE
 
Versuch es mal mit SQL-Parametern.

nahpets 6. Mai 2009 14:41

Re: ADO SQL UPDATE
 
Hallo,

wenn es mitt DeddyH's Vorschlag nicht funktioniert, versuchs bitte mal damit:
Delphi-Quellcode:
  ADOQuery1.SQL.Text := 'UPDATE `Profil` SET `Anrede` = ' + QuotedStr(geschlecht) + ',' +
  '`Vorname` = ' + QuotedStr(vorname.Text) + ',' +
  '`Nachname` = ' + QuotedStr(nachname.Text) + ',' +
  '`Alter` = ' + QuotedStr(birthday) + ',' +
  '`Strasse` = ' + QuodetStr(strasse.Text) +
  ' WHERE `Profil_ID` = ' + QuotedStr(main_win.profil_ID) + ';';
  ADOQuery1.ExecSQL;
QuotedStr sorgt für die entsprechenden Hochkommata, dann muss Du nicht soviele '' machen.
Von welchem Typ ist main_win.profil_ID, eine Zeichenfolge? Wenn nein, dann bitte mit
Delphi-Quellcode:
' WHERE `Profil_ID` = ' + main_win.profil_ID + ';';
versuchen.

taveuni 6. Mai 2009 14:42

Re: ADO SQL UPDATE
 
Was für ein Datentyp hat denn profil_id in der Datenbank?
Die Fehlermeldung sagt dass Du vermutlich einen String in ein
INT Datenfeld schreiben willst.

Wie schon vom Vor-Poster erwähnt kannst Du Dir sowieso
mit Parametern solche '''+''' Übungen sparen.

shmia 6. Mai 2009 14:47

Re: ADO SQL UPDATE
 
Bitte gewöhn' dir gleich auch mal die falsche Verwendung von dem Akzentzeichen ` ab.
Dieses Zeichen hat in einer SQL-Anweisung nichts verloren.
Sollte ein Tabellen- oder Feldname gequotet werden müssen, dann sind doppelte Anführungszeichen zu verwenden:
SQL-Code:
SELECT "42_Feld_das_mit_ner Zahl_beginnt" FROM "Tabelle mit Leerzeichen"
Man sollte es grundsätzlich vermeiden, Tabellen- oder Feldnamen so zu benennen, dass man sie in Anführungszeichen setzen muss.
Dies ist immer ein Indiz dafür, dass der Datenbankdesigner nicht richtig nachgedacht hat.

String-Literale werden in einfache Hochkommas gesetzt:
SQL-Code:
SELECT * FROM Auskunft WHERE TelefonNr='110'

thiagojonas 6. Mai 2009 22:20

Re: ADO SQL UPDATE
 
Hallo, Danke für die Hilfen, leider funktioniert es nicht :cry:

shmia 7. Mai 2009 10:08

Re: ADO SQL UPDATE
 
Zitat:

Zitat von thiagojonas
... leider funktioniert es nicht :cry:

WAS funktioniert nicht?
Fehlerberichte - wie Sie Softwarefehler melden sollten
Zeige den Sourcecode, den du verwendet hast und nenne die Fehlermeldung.

thiagojonas 7. Mai 2009 16:15

Re: ADO SQL UPDATE
 
Folgende Fehlemeldung:

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Valho_Student.exe ist eine Exception der Klasse EOleException mit der Meldung 'Datentypen in Kriterienausdruck unverträglich' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

taveuni 7. Mai 2009 16:30

Re: ADO SQL UPDATE
 
Zitat:

Zitat von thiagojonas
Folgende Fehlemeldung:

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Valho_Student.exe ist eine Exception der Klasse EOleException mit der Meldung 'Datentypen in Kriterienausdruck unverträglich' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Nochmal:
- Von welchem Datentyp ist Profil_ID?
- Hast Du die Ratschläge umgesetzt?
- Falls ja: Wo kommt die Exception? (Sourcecode)

thiagojonas 7. Mai 2009 16:39

Re: ADO SQL UPDATE
 
Also Datentyp ist Integer, primary key und halt autoincrement.

Also 1,2,3,4,etc.

Habe es so gemacht wie nahpets es mir vorgeschlagen hat, mit
Delphi-Quellcode:
' WHERE `Profil_ID` = ' + main_win.profil_ID + ';';
Bekomme dann diese Fehlermeldung:

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Valho_Student.exe ist eine Exception der Klasse EOleException mit der Meldung 'Syntaxfehler (fehlender Operator) in Abfrageausdruck '`Profil_ID` ='' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 1 von 2  1 2      

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