ADO auslesen von double Werte aus der DB



  • Hallo zusammen,

    ich kann Long-Werte aus der DB-Access eines columns einer Tabelle lesen, doch Doublewerte mit einer Präzision von 13 Nachkommastellen funzt nicht:

    char *sqlquery = "SELECT nIndex, nWert FROM Achsen WHERE nAchse=2;";
    
    _RecordsetPtr rec;
    	rec = cdb->Execute(sqlquery);
    	    while(!rec->EndOfFile) {
    
                   long Value = (long)
    rec->Fields->GetItem(_variant_t("nIndex"))->Value;
                }
    
                   double Value = (double)
    rec->Fields->GetItem(_variant_t("nWert"))->Value; // das hier geht nicht
    
    rec->MoveNext( );
    }
    

  • Mod

    Das kann nicht gehen, weil ein Variant geliefert wird, den kannst Du nicht casten. Dieser VARIANT ist eine Struktur. Schau nach dem Typ im vt Feld. Wenn es ein double ist steht dort drin VT_R8 und der Wert befindet sich in der union bei dblVal!



  • _variant_t hat eine Implizite Konvertierung nach double.
    Das müsste z.B. gehen:

    double v = _variant_t(rec->Fields->GetItem(_variant_t("nWert"))->Value);
    

  • Mod

    hustbaer schrieb:

    _variant_t hat eine Implizite Konvertierung nach double.
    Das müsste z.B. gehen:

    double v = _variant_t(rec->Fields->GetItem(_variant_t("nWert"))->Value);
    

    Dann hätte der C cast auch funktionieren müssen, denn IMHO returniert GetItem ein Variant...



  • Puh, keine Ahnung.
    _variant_t hat allerdings *ganz sicher* ne implizite Konvertierung nach double.


Anmelden zum Antworten