Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Database update statement
Forum Updated to NodeBB v4.3 + New Features

Database update statement

Scheduled Pinned Locked Moved Solved German
13 Posts 4 Posters 4.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by
    #1

    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"));
    }
    
    }
    
    1 Reply Last reply
    0
    • p3c0P Offline
      p3c0P Offline
      p3c0
      Moderators
      wrote on last edited by
      #2

      @Galilio Is WEHRE a typo in your query ?
      Also you can get more info using lastError.

      157

      1 Reply Last reply
      1
      • G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        Danke
        Mit dem "WEHRE" hast du Recht. Es muss zu "WHERE" korrigiert werden.
        LastError ist eine grosse Hilfe .
        Danke

        1 Reply Last reply
        0
        • p3c0P Offline
          p3c0P Offline
          p3c0
          Moderators
          wrote on last edited by
          #4

          @Galilio Great!. Bitte :)

          157

          1 Reply Last reply
          1
          • G Offline
            G Offline
            Galilio
            wrote on last edited by
            #5

            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 statement

            Ich weiss es nicht welche Parameter fehlt.
            Sieht es überhaupt einen Update statement so aus "Wie oben "

            danke

            1 Reply Last reply
            0
            • p3c0P Offline
              p3c0P Offline
              p3c0
              Moderators
              wrote on last edited by
              #6

              @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 ?

              157

              1 Reply Last reply
              1
              • G Offline
                G Offline
                Galilio
                wrote on last edited by
                #7

                The table contains 28 columns

                1 Reply Last reply
                0
                • p3c0P Offline
                  p3c0P Offline
                  p3c0
                  Moderators
                  wrote on last edited by
                  #8

                  @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 ?

                  157

                  1 Reply Last reply
                  1
                  • G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #9

                    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

                    raven-worxR 1 Reply Last reply
                    0
                    • G Galilio

                      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

                      raven-worxR Offline
                      raven-worxR Offline
                      raven-worx
                      Moderators
                      wrote on last edited by
                      #10

                      @Galilio
                      NACH dem exec() aufruf kannst du QSqlQuery::executedQuery() verwenden
                      Oder siehe hier.

                      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                      If you have a question please use the forum so others can benefit from the solution in the future

                      1 Reply Last reply
                      1
                      • G Offline
                        G Offline
                        Galilio
                        wrote on last edited by
                        #11

                        danke

                        Das Problem lag an einem dumme Tippfehler.

                        danke noch mal

                        J 1 Reply Last reply
                        0
                        • G Galilio

                          danke

                          Das Problem lag an einem dumme Tippfehler.

                          danke noch mal

                          J Offline
                          J Offline
                          joergpauly
                          wrote on last edited by
                          #12

                          @Galilio Setze bitte den Thread auf "Solved".

                          Viele Grüße
                          Jörg

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            Galilio
                            wrote on last edited by
                            #13

                            Wie kann ich den Thread als Solved setzen?

                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved