DBISAMでBLOB保存

解決


studio-take  2011-04-24 15:51:38  No: 40479

他のスレッドを参考に登録しようとしているんですがうまくいきません。
ご指導助言お願いします。

//FieldByNameで書き込んでみる
var
  JP:TJpegImage;
  ST:TStream;
begin
  with DbisamQuery do
  begin
    Insert;
    JP := TJpegImage.Create;
    ST := CreateBlobStream(FieldByName('JPEGIMAGE'),bmWrite);
    JP.Asign(Image1.Picture.bitmap);
    JP.SaveToStream(ST);
    Post;
    JP.Free;
    ST.Free;
  end;
end;

//手続きは完了しますが、次のレコードに移ろうとしたり、フォームを閉じようとすると
「DBISAM EngineError#10030Invalid BLOB Handle for the Table '#####'Specified」
となります。
#####はいつも番号が変わってる。

//UpdateSQLを使ってみる
var
  JP:TJpegImage;
  ST:TStream;
begin
    JP := TJpegImage.Create;
    ST := TStream.Create;
    JP.Asign(Image1.Picture.bitmap);
    JP.SaveToStream(ST);
  with DBISAMUpdateSQL do
  begin
    Query[ukInsert].ParamByName('JPEGIMAGE').SaveToStream(ST);
    ExecSQL(ukInsert);
  end;
    JP.Free;
    ST.Free;
end;

//だと「Abstructエラー」となります。


studio-take  2011-04-24 17:12:19  No: 40480

SteamじゃなくてMemoryStreamで上手くいきました。
自己完結ですいません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加