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