Textfeld aus Access-Datenbank auslesen



  • Hallo,

    die Anbindung zur Access-Datenbank funktioniert und ich habe 400 Datensätze über meinn Programm eingefügt. Allerdings kann ich nur die Integer-Felder auslesen. Die Text- und Memo-Felder haben nur kryptische Zeichen. Was mache ich falsch?

    int id;
    CString Query,Datenbank;
    VARIANT varResult;
    // Access-DB "Datensaetze": id = integer, Datenbank = text
    Query.Format("select id,Datenbank from Datensaetze where id=%i",this->m_iID);
    myRecordSet.Open(dbOpenDynaset, Query,dbReadOnly);
    myRecordSet.MoveFirst();
    while (!myRecordSet.IsEOF())
    {
      id        = myRecordSet.GetFieldValue("id"); // Korrekt: Wert entspricht this->m_iID
      varResult = myRecordSet.GetFieldValue("Datenbank"); // Falsch: Wert ist leer ("",vt_bstr) statt "Gruppe"
      Datenbank = myRecordSet.GetFieldValue("Datenbank"); // Falsch: Wert "????B" statt "Gruppe"
      myRecordSet.MoveNext();
    }
    myRecordSet.Close();
    

    Danke für Eure Hilfe!

    Viele Grüße,

    Elayas



  • Nach langem Suchen habe ich endlich den Fehler gefunden.

    Der zurückgegebene Wert ist ein COleVariant und gibt deshalb als String nur kryptische Zeichen aus. Wie folgt sollte der Code funktionieren:

    int id;
    CString Query,Datenbank;
    COleVariant varResult; // !!!
    // Access-DB "Datensaetze": id = integer, Datenbank = text
    Query.Format("select id,Datenbank from Datensaetze where id=%i",this->m_iID);
    myRecordSet.Open(dbOpenDynaset, Query,dbReadOnly);
    myRecordSet.MoveFirst();
    while (!myRecordSet.IsEOF())
    {
      id        = myRecordSet.GetFieldValue("id");
      varResult = myRecordSet.GetFieldValue("Datenbank");
      Datenbank = CString(V_BSTRT(&varResult)); // !!!
      myRecordSet.MoveNext();
    }
    myRecordSet.Close();
    

    Viele Grüße,

    Elayas


Anmelden zum Antworten