Datentypen in Sql Statements
-
Hallo Leute,
in einem SQL-Update-Statement möchte ich mit Set einer Spalte einen neuen Wert zuweisen. Ich bastele also einen CString zusammen, der dann mit einem CDaoQueryDef ausgeführt wird.string.Format("UPDATE %s SET PREIS = '%s' WHERE LFDNR = '%d';", m_strTable,m_dPreis.GetPreis(),m_lLine);
Leider gibt es einen "Data Type Mismatch" wasauchimmer ich versuche: MultiByteToWideChar, OLECHAR etc..Alles geht schief,
Ich bedank mich schon mal im Voraus für eure Hilfe
-
Hallo !
Nur so ein paar Gedanken:
Ich glaube, du versuchst in der Datenbank Zahlenfelder zu füllen. Zahlen werden aber ohne Apostroph im SQL-Statement eingetragen, also kein ' vor und hinter dem %d.
Ausserdem sieht deine mittlere Variable nach einem double aus (also m_dPreis sieht nach double aus, vielleicht liefert GetPreis() ja auch double zurück ?!?). Wenn das stimmt, solltest du auch hier die Apostrophs weglassen. Und %s solltest du dann durch %f (oder %g) ersetzen.
Und das Semikolon ist am Ende der SQL-Anweisung ist mir auch neu. Ich glaube, das muss weg. Das brauchst du nur, wenn du SQL direkt auf der Datenbank abschickst, aber nicht, wenn du es mit z.B. ExecuteSQL(...) oder ähnlichem aus einem Programm abschickst.
Aber wie gesagt: das sind nur ein paar Vermutungen...
Tschüss
-
Ja,
du hast Recht, es liegt an den Hochkommata in dem Where-Statement, weil der Wert dort ein long int ist. Vielen Dank.
Nur zur Info, m_dPreis ist eine Dialogbox und GetPreis liefert einen CString zurück.Vielen Dank noch mal für deine Mühe