Hi,
habe jetzt doch mal getestet. Dabei musste ich zu meiner Schande feststellen, dass ich den Code für den
ADO/OLEDB Zugriff einfach angepasst hatte, ohne das Handbuch vorher zu lesen. Im Gegensatz zu AdoQuery ist IbQuery eine Nur-Lesen-Komponente. Die Vorgehensweise unterscheidet sich dann etwas. Hoffentlich kommst du mit meinem Code klar.
Zerknirschte Grüße vom marabu
Delphi-Quellcode:
procedure ibLoadJpeg(q: TIBQuery; fieldName: string; jpeg: TJpegImage);
var
s: TStream;
begin
s := q.CreateBlobStream(q.FieldByName(fieldName), bmRead);
jpeg.LoadFromStream(s);
s.Free;
end;
function ibSaveJpeg(q: TIBQuery; paramName: string; jpeg: TJpegImage): boolean;
var
s: TMemoryStream;
begin
s := TMemoryStream.Create;
jpeg.SaveToStream(s);
q.ParamByName(paramName).LoadFromStream(s, TBlobType(0));
end;
procedure TMainForm.LoadBtnClick(Sender: TObject);
begin
Q.SQL.Text := 'SELECT passphoto FROM s3gallery WHERE persnr = 123';
Q.Open;
ibLoadJpeg(q, 'passphoto', photo);
Q.Close;
end;
procedure TMainForm.SaveBtnClick(Sender: TObject);
begin
Q.SQL.Text := 'UPDATE s3gallery SET passphoto = :passphoto WHERE persnr = 123';
ibSaveJpeg(Q, 'passphoto', photo);
Q.ExecSQL;
end;