MFC ODBC MSAccess und Memos

bazteka_burnz

Grünschnabel
Hallo,

Ich will einen Text länger als 255 Zeichen in einer MS Access-Datenbank speichern und wieder auslesen. Deshalb kann ich kein Datentyp "Text" nehmen, sonder muss "Memo" nehmen.

Meine MFC-Applikation benutzt den ODBC-Treiber und kann in die Tabelle Memos eintragen, die länger als 255 Zeichen sind. Ich kann Sie dann auch in der Datenbank sehen, wenn ich sie direkt mit Access anschaue. Beim auslesen mit meiner Applikation bekomme ich immer diese tollen Rechtecke zurück.
Mein CDBVariant liefert mir beim Auslesen von dem "Memo" immer den Type (m_dwType = DBVT_WSTRING).
Aber egal wie ich es dann versuche auszulesen funktioniert es nicht. Ich habe probiert mir den Inhalt der Member-Variablen m_pstring, m_pstringA und m_pstringW (die alle einen Pointer auf die selbe Speicherstelle haben) zu holen. Bei m_pstring und m_pstringW bekomme ich Kästchen und bei m_pstringA bekomme ich nur die ersten beiden Buchstaben (und das ist definitiv zu wenig).

Wenn ich den Datentyp wieder auf Text umstelle, gehen mir halt die Zeichen, die länger sind als 255 sind verloren, aber meine Applikation kann wieder sauber auslesen. Deshalb denke ich nicht, dass ich das System (ODBC) falsch verstanden habe.

Okay, ich habe nochmal weiterprobiert und mir ein Test-Projekt angelegt um das Problem genauer eingrenzen zu können. Dabei ist mir aufgefallen, wenn ich in der Entwicklungsumgebung (VS 2003) die Projekteigenschaften von Unicode-Zeichensatz auf Multibyte-Zeichensatz ändere, funktioniert die ganze Geschichte. Das Problem ist dann aber, dass ich kein Unicode-Zeichen auf der Oberfläche ein-/ausgeben kann und dementsprechend auch kein Unicode in die Datenbank speichern kann. Das ist aber wichtig.

Nochmal meine Frage: Kann ich über ODBC Unicode-Strings aus einer MS Access-Datenbank auslesen, die sich in einer Spalte mit dem Datentyp Memo befinden?

Hatte von Euch schonmal jemand ein ähnliches Problem und dann eine Lösung dafür?
Vielen Dank für eure Hilfe!!
 
Zuletzt bearbeitet:
So, jetzt hab ich auch die Lösung für das Problem gefunden und damit niemand blöd sterben muss:
Anstelle von "VS 2003" "VS 2005" nutzen :rolleyes:! MS hat da andere Bibliotheken dabei, die den Memo-Fehler gefixt haben.
 
Zurück