Ich habe folgende Funktion zum Updaten eines Records in einer
DB-Tabelle:
Delphi-Quellcode:
function TMailTemplateDatabase.UpdateTemplate (RecordID : integer ; Subject : string ; TemplateFilename : string ) : boolean ;
var
aRS : _RecordSet;
aOleV : OleVariant;
sSQL : string ;
FConnection : string ;
Dummy : string ;
aStr : TMemoryStream ;
begin
aStr := TMemoryStream.create ;
aSTR.LoadFromFile(TemplateFilename);
aSTR.position := 0 ;
aRS := CoRecordSet.Create;
aRS.CursorLocation := adUseServer;
with FDatabaseInfo do begin
sSQL := format('select %s, %s from %s where %s=%d',
[Subject,Body,Tablename,ID,RecordID]
) ;
FConnection := ConnectionString ;
end ;
try
aRS.Open(sSQL, FConnection,adOpenStatic, adLockOptimistic, adCmdText);
aRS.Collect[0] := Subject ;
aOleV := StreamToOleVariant (aSTR,aSTR.size) ;
aRS.Collect[1] := aOleV ; // --> Hier knallt's
OleVariant (aRS).Update;
finally
aRS.Close;
end;
end;
Der Code klappt auch soweit, bis auf das Problem, dass das Blobfeld aRS.Collect[1] mir Probleme bereitet. Als RuntimeFehlermeldung kommt dann: Der Vorgang ist in diesem Zusammenhang nicht zugelassen.
Wie kann ich denn nun mein Blobfeld, welches in aOleV gespeichert ist, in der Tabelle updaten?