Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Formatierten Text in DB speichern (https://www.delphipraxis.net/16131-formatierten-text-db-speichern.html)

Fellmer Lloyd 11. Feb 2004 08:17


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:
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;
Leseprozedur:
Delphi-Quellcode:
   
TmpMemoryStream:= 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;
Gruss Fellmer

CenBells 11. Feb 2004 11:05

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

Fellmer Lloyd 11. Feb 2004 14:41

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

Fellmer Lloyd 12. Feb 2004 07:51

Re: Formatierten Text in DB speichern
 
Die SQL Anweisung sollte etwa so aussehen denke ich
SQL-Code:
ALTER TABLE TableData CHANGE 'RichText' 'RichText' BLOB NOT NULL;
-->Funktioniert aber noch nicht :wiejetzt:
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

Tyrael Y. 12. Feb 2004 08:43

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:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz