![]() |
Formatierten Text in DB speichern
Morgen!
Ich will den Inhalt eines Richedit mit formatierung in eine Datenbank speichern. Ich habe bereits eine Lese/Speicherprozedur geschrieben, bin mir jedoch nicht sicher ob das die optimale Lösung ist. Über Kritik würde ich mich freuen :coder: Zur Datenbank -------------- DB-Typ: Access. Feldtyp: Memo. Speicherprozedur:
Delphi-Quellcode:
Leseprozedur:
TmpMemoryStream:= TMemoryStream.Create;
TmpStringList:= TStringList.Create; try RichEditData.Lines.SaveToStream(TmpMemoryStream); //Speichert den Text mit formatierung in ein Stream TmpMemoryStream.Position:= 0; //Position auf 0 setzen TmpStringList.LoadFromStream(TmpMemoryStream); //Text Mit Formatierung aus dem Stream lesen TableData.FieldByName('RichText').AsString:= TmpStringList.Text; finally TmpMemoryStream.Free; TmpStringList.Free; end;
Delphi-Quellcode:
Gruss FellmerTmpMemoryStream:= TMemoryStream.Create; TmpStringList:= TStringList.Create; try TmpStringList.Text:= TableData.FieldByName('RichText').AsString; TmpStringList.SaveToStream(TmpMemoryStream); //Speichert den Text mit formatierung in ein Stream TmpMemoryStream.Position:= 0; //Position auf 0 setzen RichEditData.Lines.LoadFromStream(TmpMemoryStream);//Text Mit Formatierung aus dem Stream lesen finally TmpMemoryStream.Free; TmpStringList.Free; end; |
Re: Formatierten Text in DB speichern
Hallo,
ich verwende für solche operationen ein Feld vom Typ Blob. Da brauchst du nicht den Umweg über ein TStringList-Objekt machen. Und ich bin mir nicht so sicher, ob die Steuercodes in ein normales Stringfield übernommen werden. Das sieht dann so aus
Delphi-Quellcode:
TBlobfield(TableData.FieldByName('RichText')).LoadFromStream(DeinStream);
Gruß Ken |
Re: Formatierten Text in DB speichern
Hi!
Danke für die Antwort. Ich werde mein Datenbank-Feld ändern (vom Typ "Memo" in "OLE-Objekt" bzw. Blob). Jetzt habe ich eine weitere Frage: Wie kann ich in den bereits mit Daten gefüllten Access-Datenbanken den Feldtyp ändern? (Von meinem Programm aus). Das sollte doch im Prinzip mit einer SQL-Anwesung möglich sein (Query), oder liege ich falsch? Was passiert mit den Daten im vorhandenen "Memo"-Feld, wenn es umgewandelt wird? Sie sollen ja schliesslich nicht verloren gehen. Gruss Fellmer |
Re: Formatierten Text in DB speichern
Die SQL Anweisung sollte etwa so aussehen denke ich
SQL-Code:
-->Funktioniert aber noch nicht :wiejetzt:
ALTER TABLE TableData CHANGE 'RichText' 'RichText' BLOB NOT NULL;
Gibt es den Parameter CHANGE überhaupt? Kenne sonst nur Add/Delete, aber dann gehen ja die Daten verloren :? [EDIT] Habe den Parameter "Modify" enddeckt... kann die Anweisung aber immer noch nicht ausführen |
Re: Formatierten Text in DB speichern
Wenn der alte Typ der Daten dem neuen Typ nicht mehr entspricht gehen die Daten natürlich verloren.
Tip: Speichere die alten Daten in eine neue Tabelle, ändere deinen Typ in der alten Tabelle und übertrage dann die Daten typgerecht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz