TMemo-Text in Access-DB speichern (war: TMemo)



  • Hallo,

    ich möchte über ein TMemo in einen Access-DB schreiben:
    Wenn ich aber diesen Code hier ausführe

    TabelleXYZ->FieldByName("Memo")->AsString = Memo1->Lines->Text;
    

    habe ich in dem DB-Feld nur die erste Zeile stehen, der Rest ist weg.
    Wo liegt der Fehler?

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • In der Hilfe kann ich auch nix dazu finden, und im Forum hier habe ich natürlich auch schon gesucht...
    Kann mir jemand helfen?!



  • bärbel,

    bärbel schrieb:

    habe ich in dem DB-Feld nur die erste Zeile stehen, der Rest ist weg.

    blöde Idee: Wegen WordWrap=true sieht es nur so aus, als hättest Du mehrere Zeilen. Hast Du explizit Zeilenumbrüche mit ENTER eingefügt?
    Ansonsten: bist Du sicher, daß Dein Feld-Typ ein Memo oder Blob oder Text (oder wie immer das bei Access heißt) ist?



  • Also in der DB habe ich schon ein Memofeld.
    Und ich habe auch Zeilenumbrüche mit Enter erzeugt!
    Und nu?



  • Sorry Leute, ich will ja hier nicht nerven.
    Aber es funktioniert immer noch nicht 😕



  • und wenn du Memo1->Text nimmst?



  • Hallo Bärbel,
    ich vermute, das es an der Acess-DB liegt, Acess scheint die Zeile nach dem ersten Zeilenumbruch abzuschneiden.
    Wenn man sich nämlich den Inhalt des Memofeldes z.B. in der Caption des Formulares über Memo->Text ausgeben läßt, so sieht man ganz deutlich die Steuerzeichen nach jeder einzelnen Zeile.
    Bist du denn auf die Zeilenumbrüche angewiesen? Wenn nicht, so kannst folgendes verwenden:

    String txt;
    
    for (int i=0; i < Memo1->Lines->Count;i++)
    {
      txt += Memo1->Lines->Strings[i] + " ";    
    }
    
    TabelleXYZ->FieldByName("Memo")->AsString = txt;
    

    Hier wird einfach Zeile für Zeile mit Leerzeichen getrennt in den String txt eingelesen und dieser dann in Dein Datenbankfeld geschrieben.

    Gruß Burkhard



  • bärbel schrieb:

    Sorry Leute, ich will ja hier nicht nerven.

    *grr*
    Vielleicht kommt Access mit dem \n nicht zurecht.
    Versuche mal alle \n mit \r\n zu ersetzen.



  • dschensky schrieb:

    *grr*
    Vielleicht kommt Access mit dem \n nicht zurecht.
    Versuche mal alle \n mit \r\n zu ersetzen.

    Und dafür kannst Du dann das obige Programmbsp. nehmen 😉 , mußt nur das " " durch "\r\n" ersetzen:

    String txt; 
    
    for (int i=0; i < Memo1->Lines->Count;i++) 
    { 
      txt += Memo1->Lines->Strings[i] + "\r\n";     
    } 
    
    TabelleXYZ->FieldByName("Memo")->AsString = txt;
    

    Gruß Burkhard 👍



  • Hallo,

    super Leute, hat geklappt.
    Vielen Dank! 👍


Anmelden zum Antworten