Einzelnen Beitrag anzeigen

Benutzerbild von emsländer
emsländer

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

Problem: Dokument in Datenbank speichern

  Alt 20. Feb 2007, 16:28
Datenbank: MSSQL • Version: 2005 SP2 • Zugriff über: ADO und direkt
Moin,

noch ein kleines Problem. Ich habe ein DB-Feld mit der Bezeichnung dokument (varchar(max)). In dieses soll ein Word/RTF Dokument gespeichert werden. Da dieses ohne Kodierung nicht funzt, arbeite ich mit base64en/decode. Allerdings ist das DB-Feld immer leer. Lasse ich das base64 weg, klappt das Speichern soweit. Allerdings gibts Probleme, wenn was anderes als Plain Text kommt.
Delphi-Quellcode:
function unterlagen_indb : boolean;
  var datei : string;
      lfdnr : string;
      _text64 : string;
      fstream : Tfilestream;
      sstream : Tstringstream;
      erg : integer;
begin
  lfdnr := AktenManager.grid_unterlagenverwaltung.cells[0,AktenManager.grid_unterlagenverwaltung.selectedrow];
  if AktenManager.OpenDialog1.Execute then begin
    datei := aktenmanager.opendialog1.FileName;
    try
      fstream := tfilestream.Create(datei,fmopenread);
      sstream := tstringstream.create('');
      fstream.position := 0;
      sStream.CopyFrom(fstream,fstream.size);
      sStream.Position := 0;
      _text64 := base64encode(sSTream.DataString);
      erg := update_unterlagen(lfdnr, _text64);
      showmessage('Result: '+inttostr(erg));
      _text64 := '';
    finally
      freeandnil(fstream);
      freeandnil(sStream);
    end;
  end;
end;

function update_unterlagen(lfdnr, inhalt : string) : integer;
  var _stmp : string;
   _query : TAdoquery;
begin
  result := 0;
  _query := TADOquery.Create(nil);
  with _query do begin
     datasource := AktenManager.Datasource_fdd;
     connection := AktenManager.ADOConnFDD;
     try
      _stmp := 'update vertragswerk set dokument = '''+inhalt+ ''' where lfdnr = '+lfdnr;
      sql.Add(_stmp);
      result := ExecSQL;
     except
      result := 99;
     end;
   end;
   freeandnil(_query);
end;
Hat auch jemand da einen Tipp?`

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