GetFieldValue nur einmal?



  • hallo liebes Forum,

    in einer Schleife durchlaufe ich alle Felder eines CRecordset-Datensatzes
    und hole mir den Wert:

    short f;
          for(f=0; f < rs.GetODBCFieldCount(); ++f)
          {
            rs.GetODBCFieldInfo(f, fieldinfo);
            rs.GetFieldValue(f, variantdata);
            rs.GetFieldValue(f, stringdata);
            switch(variantdata.m_dwType) {
            ...
            }
          }
    

    Ich verwende dabei beide Aufruf-varianten (CString/CDBVariant) des GetFieldValue nacheinander.

    Bei 2. Aufruf läuft er in meinen catch-block ohne weitere Fehlerbeschreibung.

    Warum ist es nicht möglich, die gleiche Spalte 2x auszulesen ???

    Danke,
    Smeagol



  • wir wohl ein andere fehler sein..

    wieso liest du den wert nicht einfach 1x aus, und kopiert die rückgabe?

    zeig mal mehr code



  • Kann es sein, dass Du in der Schleife

    rs.MoveNext()
    

    vergessen hast?

    Edit: Ich merke schon, Du meinst die Spalten.

    Was sagt denn

    catch(CDBException *e)
    

    ?



  • ich werde das gefühl nicht los, dass wenn ich das Feld über das CDBVariant auslese, manche Werte nicht korrekt rüberkommen.

    So wollte ich, wenn der Typ "variantdata.m_dwType" nicht korrekt zugeordnet werden kann, den Wert aus dem CString extrahieren und die Formatierung aus dem "CODBCFieldInfo . m_nSQLType" erraten.

    bedauerlicherweise schlägt die zweite Abfrage der Daten auf die selbe Spalte fehl.
    Sprich wirft eine CDBException mit dem Code 100 ohne errText.

    und ich versteh nicht so richtig warum 😞

    weiss jemand?



  • das sieht mir nach ErrorCode, nicht nach ErrorText aus.

    Versuche mal:

    e->m_strError
    

    auszugeben. Vielleicht siehst Du dann mehr.


  • Mod

    Könnte es sein, dass die Spalte NULL ist?


Anmelden zum Antworten