jpeg、bmp画像をDBで読み書きしたいのですが、上手くいきません。
画像を読むためにはTBlobStreamを使用するということが分かり、以下のようにしてみましたが、「無効なクラス型キャスト」とエラーが表示されます。
フィールドの型に問題があるのでしょうか?
var
JPG1: TJPEGImage;
Strm: TBlobStream;
begin
JPG1 := TJPEGImage.Create;
JPG1.LoadFromFile('C:\Image1.jpg');
ADOTable1.TableName := 'Table1';
ADOTable1.Open;
ADOTable1.Edit;
ADOTable1.Locate('ID1;ID2;ID3',
VarArrayOf(['1', '1', '1']),
[loCaseInsensitive]);
// BLOB ストリームを作成
Strm := TBlobStream.Create(TBlobField(ADOTable1.FieldByName('Graphic1')), bmWrite);
try
// JPEG データをストリームに保存
JPG1.SaveToStream(Strm);
atblData1.Post;
finally
Strm.Free;
JPG1.Free;
end;
end;
「DBはAccsess2000」を使用し、読み書きするフィールドの型は「OLE オブジェクト型」に設定しています。
すみません、知ってらっしゃる方がいましたら教えてください。
よろしくお願いします。
自己レスです。
ADOの場合にはTBlobStreamではなくTADOBlobStreamなのですね。
解決しました。
ツイート | ![]() |