AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi RTF-Dokument in DB, raus kommt Müll
Thema durchsuchen
Ansicht
Themen-Optionen

RTF-Dokument in DB, raus kommt Müll

Offene Frage von "emsländer"
Ein Thema von emsländer · begonnen am 4. Mai 2007 · letzter Beitrag vom 5. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#1

RTF-Dokument in DB, raus kommt Müll

  Alt 4. Mai 2007, 17:53
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Moin,

hab da echt ein dickes Problem: Ein RTF-Dokument, welches ich in einer DB (Field ist Typ Image), speichere, kommt als Müll wieder heraus (bzw. alle Formatierungen sind weg)

Der Quelltext zum Speichern ist hier: (inhalt enthält wprichtext.text, also das rtf)
Delphi-Quellcode:
function Tfrm_dokumente.neuer_datensatz(zu_akte, _name, inhalt : string) : integer;
  var _stmp : string;
   _query : TAdoquery;
   store : boolean;
begin
  result := 0;
  _query := TADOquery.Create(nil);
  with _query do begin
     connection := AktenManager.ADOConnFDD;
     try
       _stmp := 'insert into dokumente (dokument) values ('''+inhalt+''')';
       sql.Add(_stmp);
       result := ExecSQL;
       SQL.Text := 'Select @@Identity';
       Active := True;
       result := Fields[0].AsInteger;
       sql.Clear;
       _stmp := 'insert into dokumentenliste (zu_akte,name,dokument_nr) values ('+zu_akte+','''+_name+''','+inttostr(result)+')';
       sql.Add(_stmp);
       result := ExecSQL;
     except
       result := 99;
     end;
   end;
   freeandnil(_query);
end;
Hier nun der Code zum Lesen: (Wptext ist wprichtext von den WPTOOLS)
Delphi-Quellcode:
    try
      _stmp := 'select dokument from finanzdesk.dbo.dokumente where lfdnr ='+dok_nr;
      _query.sql.Text := _stmp;
      _query.open;
      erg64 := _query.FieldByName('dokument').Value;
      _query.close;
      erg := base64decode(erg64);
      wptext.Text := erg;
      wptext.SaveToFile('text.rtf'); // Dieses RTF ist zerhackt - die Formatierung ist weg
    except
      //
    end;
  end;
Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 4. Mai 2007, 17:59
hast du dir mal angeschaut, ob die daten richtig in der DB stehen?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 4. Mai 2007, 18:01
bist du sicher, dass in inhalt die formatierungen noch drin sind?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 4. Mai 2007, 21:09
Ich nutze diese beiden Funktionen, auch in Verbindung mit einem MSSQL Server:
Delphi-Quellcode:
function TDBRTFReport.LoadFromBlob(const AField: TField; const Stream: TStream): boolean;
var
  ResultStr: string;
  PResultStr: PChar;
begin
  Result := false;
  if (Assigned(AField)) and (Assigned(Stream)) then begin
    try
      ResultStr := AField.Value;
      PResultStr := PChar(ResultStr);
      Stream.Write(PResultStr^, Length(ResultStr));
      Stream.Seek(0,0);
      Result := true;
    except
    end;
  end;
end;

function TDBRTFReport.SaveToBlob(const Stream: TStream; const AField: TField): boolean;
var
  FieldStr: string;
  PFieldStr: PChar;
begin
  Result := false;
  if (Assigned(AField)) and (Assigned(Stream)) then begin
    try
      Stream.Seek(0,0);
      SetLength(FieldStr, Stream.Size);
      PFieldStr := PChar(FieldStr);
      Stream.Read(PFieldStr^, Stream.Size);
      AField.Value := FieldStr;
      Result := true;
    except
    end;
  end;
end ;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 4. Mai 2007, 23:01
Wieso nimmst Du als Datentyp 'IMAGE'?? Also RTF ist eindeutig ein 'TEXT' bzw. 'NTEXT', oder ? Hat bei mir funktioniert.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 5. Mai 2007, 09:53
Zitat von alzaimar:
Wieso nimmst Du als Datentyp 'IMAGE'?? Also RTF ist eindeutig ein 'TEXT' bzw. 'NTEXT', oder ? Hat bei mir funktioniert.
An anderer Stelle wurde mir hier einmal Typ Image empfohlen.

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 5. Mai 2007, 10:30
Hallo emsländer,

TEXT ist schon besser. und mit einen ADODataset sieht es dann zum Speichern so aus:

   ADODS.FieldByName('dokument').Assign(RichEdit.Lines); und zum lesen, so:

  RichEdit.Lines.Assign(ADODS.FieldByName('dokument'));
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 5. Mai 2007, 10:36
Meine Methode oben funktioniert einwanfrei mit dem Feldtype image und den ADO Komponenten. Es vermeidet den Weg über ein TRichEdit, das die ein RTF Dokument zerstückeln kann.

@Emsländer: hast du das mit den Streams denn schon ausprobiert?
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 5. Mai 2007, 10:53
Zitat von Alter Mann:
Hallo emsländer,

TEXT ist schon besser. und mit einen ADODataset sieht es dann zum Speichern so aus:

   ADODS.FieldByName('dokument').Assign(RichEdit.Lines); und zum lesen, so:

  RichEdit.Lines.Assign(ADODS.FieldByName('dokument'));
Hoi alter Mann,

text kannste knicken. Da bei diesem, doch recht komplexen Text, viele üble Zeichen bei sind, knallt das an der Stelle.

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#10

Re: RTF-Dokument in DB, raus kommt Müll

  Alt 5. Mai 2007, 11:40
Hallo zusammen,

ich glaube, das ich das ein wenig eingrenzen konnte:

wptext.SaveToFile(sAppdir+'\danach.rtf'); => hier ist das Dokument noch ok. Jetzt möchte ich das Zeug in einen string speichern, um das speichern in der Datenbank vorzubereiten:
_stmp := wptext.text Wenn ich diesen Variableninhalt nun in eine Datei speichere,
Delphi-Quellcode:
fs := tfilestream.create(sAppDir+'\tmp.rtf', fmcreate);
fs.Write(_stmp[1],Length(_stmp));
fs.free;
speichere, hab ich da Müll stehen.

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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