Solved Database update statement
-
Hallo Zusammen,
ich habe eine applikation bei denen ich einen Access Datenbank verwende.
Die Daten in der Tabelle zu schreiben hat einwandfrei funktioniert.
bei Update Statement habe ich einen Problem.
Ich weiss es nicht was ich falsch mache.Anbei einen Codeabschnitt wie der Update Statment aussieht:
void DatabaseManager:: updateCalibrationMeasureData( const AClass &result) { QSqlQuery query; query.prepare("UPDATE tblCCWEncoder SET IsCalibrated=:iskalibriert, DCA=:dca, DCB=:dcb, T1=:t1, T2=:t2, " "T3=:t3, T4=:t4, PWZ=:pwz, Phase=:phase, Direction=:direction, " "Current=:current, Volatge=:voltage, Speed=:speed, PE=:pE, WE=:wE, A0=:a0, " "A1=:a1, A2=:a2, A3=:a3, A4=:a4, A5=:a5, " "A6=:a6, A7=:a7, Datum=:datum, Uhrzeit=:uhrzeit WEHRE SerialNrIDRef = '" + getEncoderName() + "'"); query.bindValue(":iskalibriert", true); query.bindValue(":dca", result.strfuGetDCA()); query.bindValue(":dcb", result.strfuGetDCB()); query.bindValue(":t1", result.strfuGetT1()); query.bindValue(":t2", result.strfuGetT2()); query.bindValue(":t3", result.strfuGetT3()); query.bindValue(":t4", result.strfuGetT4()); query.bindValue(":pwz", result.strfuGetPWZ()); query.bindValue(":phase", result.strfuGetPhaseAB()); query.bindValue(":direction", result.strfuGetDirection()); query.bindValue(":current", result.strfuGetI()); query.bindValue(":voltage", result.strfuGetU()); query.bindValue(":speed", result.strfuGetSpeed()); query.bindValue(":pE", result.strfuGetPosError()); query.bindValue(":wE", result.strfuGetWidthError()); query.bindValue(":a0", result.strfuGetAsicA0()); query.bindValue(":a1", result.strfuGetAsicA1()); query.bindValue(":a2", result.strfuGetAsicA2()); query.bindValue(":a3", result.strfuGetAsicA3()); query.bindValue(":a4", result.strfuGetAsicA4()); query.bindValue(":a5", result.strfuGetAsicA5()); query.bindValue(":a6", result.strfuGetAsicA6()); query.bindValue(":a7", result.strfuGetAsicA7()); query.bindValue(":datum", getCurrentDate()); query.bindValue(":uhrzeit", QTime::currentTime()); query.exec(); if(!query.isActive()) { throw(QString("DataBase Error: updateCCW_CalibrationMeasuredata")); } }
-
-
Danke
Mit dem "WEHRE" hast du Recht. Es muss zu "WHERE" korrigiert werden.
LastError ist eine grosse Hilfe .
Danke -
@Galilio Great!. Bitte :)
-
Hi Danke
ich bekomme aber immer diese Fehlermeldung"lastError":[Microsoft][ODBC-Treiber für Microsoft Access] 27 Parameter wurden erwartet,
aber es wurden zu wenig Parameter übergeben. QODBC3: Unable to execute statementIch weiss es nicht welche Parameter fehlt.
Sieht es überhaupt einen Update statement so aus "Wie oben "danke
-
@Galilio Yes the update statement works in that way. AFAIK it is not compulsory to update all columns when using
update
query. Does your table contain 27 columns ? -
The table contains 28 columns
-
@Galilio Something strange. The table contains 28 columns, the error shows 27 are expected and you are actually updating 25 which is fine. Are you sure you are looking for correct table ?
Also can you try updating just 1 column ? -
Wie kann ich den query lesen bevor exec()
z.B:QSqlQuery query; query.prepare("........"); query.bindvalue(.....); .... //und genau hier bevor es "query.exec();" durchgeführt wird, der Inhalt von query lesen. query.exec();
Danke
-
-
danke
Das Problem lag an einem dumme Tippfehler.
danke noch mal
-
@Galilio Setze bitte den Thread auf "Solved".
Viele Grüße
Jörg -
Wie kann ich den Thread als Solved setzen?