ODBC frage



  • Hallo, ich habe eine Acces Datenbank erstellt und greife per ODBC darauf zu. Unter anderem habe ich ein Feld erstellt in der Datenbank vom Typ Memo. In meiner RecordSet klasse ist das dann als CString deklariert. Das habe ich nun mit einem Editfeld verbunden. Sobald ich nun mehr als 255 zeichen in das feld eintrage und es speicher und dann neu auf das feld zu greife sagt er mit daten sind beschnitten und ich kann den datensatz nur noch auslesen. Memo kann eigentlich 65000 zeichen speichern und CString ist doch auch nicht auf 255 zeichen beschränkt wo liegt der fehler. Kann mir jemand helfen?



  • Hallo, ich habe das problem gelöst es lag an ODBC genauer gesagt an der RFX funktion. Wenn man da nicht als Parameter den maximal wert übergibt macht er als default 255 zeichen. Hier mal das bsp.

    RFX_Text(pFX, _T("[Beschreibung]"), m_Beschreibung,750,0,0);

    man kann den wert rein theoretisch bis INT_MAX machen. Vieleicht ist das ja was für die Faq den ich habe im forum gesehen das es nicht das erste mal ist das dieses problem auftritt.

    Schönen abend noch



  • DANKE! 👍

    Mit dem Problem kämpfe ich schon länger, ich dachte immer, das läge an dem doofen DBMS. 🙄

    Bitte ab in die FAQ. 🙂

    Aber: Wäre es nicht besser, als vorletzten Parameter SQL_VARCHAR zu übergeben?
    Oder gleich nur die Länge und sonst wieder die Standardwerte nutzen?

    RFX_Text(pFX, _T("[Bemerkung]"), m_strBemerkung, 500);
    


  • Hallo,

    da ich wohl eindeutig zu spät zur Klärung eures Problems gekommen bin, wollte ich nur noch anmerken, daß die Vorgehensweise und die Lösung (von xyz44) auch in der MSDN-Doku zu finden sind, als "technical note #45":

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfcnotes_tn045.asp

    MfG



  • Genanu wegen solchen Dingen habe ich mir eine Wrapper-Klasse geschreiben die mir immer eine CString liefert.
    So hatte ich einmal Arbeit und nie wieder.
    Mit soclehn Fehler kann man sich eine ganzen Projektplanung verhauen.


Anmelden zum Antworten