Entwickler-Ecke

Datenbanken - UPDATE SET - "Parameter hat keinen Standardwert"


FinnO - Do 15.03.12 15:45
Titel: UPDATE SET - "Parameter hat keinen Standardwert"
Moin,

wie regelmäßig verzweifle ich mal wieder. Ich versuche eine Abfrage durchzuführen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    
  fQuery.SQL.Add('UPDATE article SET');
  fQuery.SQL.Add(format('"barcode" = "%s", "name" = "%s", "notes" = "%s", "img_ID" = "%d",',[fBarcode, fName, fNotes, fImgID]));
  fQuery.SQL.Add(format('"group_ID" = "%d" , "category_ID" = "%d", "chain_ID" = "%d", ',[fGroupID, fCategoryID, fChainID]));
  fQuery.SQL.Add(format('"amount" = "%n" , "unit" = "%s"',[fAmount,fUnit]));
  fQuery.SQL.Add('WHERE "ID" = ' + QuotedStr(IntToStr(fID)));


Das Formatieren klappt auch. Ich erhalte folgenden SQL-String:


SQL-Anweisung
1:
2:
3:
UPDATE article SET
"barcode" = "4009412813""name" = "Frische Milch...""notes" ="1.5 % Fett, pasteurisiert" , "img_ID" = "0""group_ID" = "0""category_ID"="1""chain_ID"="1","amount"="1,00" , "unit"="Liter"
WHERE "ID"="3"


Nun Beschwert sich irgendeine Überprüfungseinheit :"Der Parameter barcode hat keinen Standardwert"

Ich kann aber nirgends erkennen, wo ich versuche einen Standardwert zu schreiben o.Ä.

Um Lösungsvorschläge wird gebeten.

LG


bummi - Do 15.03.12 16:23

gegen was für eine Datenbank fährst Du denn, die "" um Feldbezeichner und Werte kommen mir seltsam vor.
Funktioniert der beiliegende SQL in der Datenbankoberfläche?


FinnO - Do 15.03.12 16:27

Moin Bummi

habe die Anführungszeichen mal überarbeitet. Wenn ich direkt folgenden SQL-String execute:


SQL-Anweisung
1:
2:
3:
UPDATE article SET
barcode = "12371273" , articlename="test" 
WHERE ID = 3


Funktioniert das blendend.

Ändert nur nichts an der Fehlermeldung, wenn ich es wie oben angegeben durchführe.

EDIT: Gnade mir Gott - das Feld heißt "articlename" und nicht "name" - Ich verrecke. Danke Trotzdem. Funktionierender code:


Delphi-Quelltext
1:
2:
3:
4:
5:
    fQuery.SQL.Add('UPDATE article SET');
    fQuery.SQL.Add(format('barcode = "%s", articlename = "%s", notes = "%s", img_ID = %d,',[fBarcode, fName, fNotes, fImgID]));
    fQuery.SQL.Add(format('group_ID = %d , category_ID = %d, chain_ID = %d, ',[fGroupID, fCategoryID, fChainID]));
    fQuery.SQL.Add(format('amount = "%n" , unit = "%s"',[fAmount,fUnit]));
    fQuery.SQL.Add('WHERE ID = ' +IntToStr(fID));


Martok - Do 15.03.12 17:45

Die falschen Quotes sinds immer noch ;)
Für Strings sind die einfachen '' zuständig - dann auch noch die String-Werte durch QuotedStr jagen.


FinnO - Do 15.03.12 18:44

Stört aber glücklicherweise meine Datenbank nicht :)


bummi - Do 15.03.12 18:49

Access ??


FinnO - Do 15.03.12 19:04

Jo !!


vagtler - Fr 16.03.12 08:22

Ach so, ich dachte hier war die Rede von einer Datenbank. :mrgreen: