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