关于保存jpg图片的有关问题

关于保存jpg图片的问题!
我用access做数据库存储图片的字段类型为ole型
保存的代码如下:
var
  strm: TMemoryStream;
  myjpeg: TJPEGImage;
begin
//ExtName是一个全局变量,它通过ExtractFileExt(openpicturedialog1.FileName)获得扩展名; 
  if (ExtName = '.jpg') then
  begin
  ClientDataSet1.Edit;
  strm := TMemoryStream.Create;
  myjpeg := TJPEGImage.Create;
  myjpeg.Assign(image1.Picture.Graphic);
  myjpeg.SaveToStream(strm);
  strm.Position := 0;
  tblobfield(ClientDataSet1.FieldByName('相片')).LoadFromStream(strm);
  strm.Free;
  ClientDataSet1.post;
  end
end; 
每次保存是都提示"Bitmap image is not valid"这是为什么?我该怎样做才行?谢谢!

------解决方案--------------------
字段类型不对吧
------解决方案--------------------
var
Stream:TMemoryStream;
Jpg:TjpegImage;
begin
try
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('');
ADOQuery2.Open;
if not ADOQuery2.FieldByName('pic').IsNull then begin
if ADOQuery2.FieldByName('pic_type').AsInteger = 2 then begin
try
Stream:=TMemoryStream.Create;
Jpg:=TjpegImage.Create;
TBlobField(ADOQuery2.FieldByName('pic')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
Stream.Position :=0;
jpg.LoadFromStream(Stream);
image1.Picture.Assign(Jpg);
finally
Stream.Free;
Jpg.Free;
end;
end else if ADOQuery2.FieldByName('pic_type').AsInteger = 1 then begin
Image1.Picture.Bitmap.Assign(ADOQuery2.FieldByName('pic'));
end else begin
image1.Picture := nil;
end;
end else begin
image1.Picture := nil;
end;
except
common.InfoMessage('提取图片数据失败!');
exit;
end;


var
Stream:TMemoryStream;
ext:string;
pictype: integer;
begin
try
try
ext:=extractfileext(openpicturedialog1.FileName);
if ext = '' then exit;
if uppercase(ext) ='.BMP' then begin
pictype := 1;
end else if (uppercase(ext) = '.JPEG') or (uppercase(ext) = '.JPG') then begin
Pictype := 2;
end;
Stream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Stream);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update member set pic =:pic,pic_type =:pictype where ---');
ADOQuery1.Parameters.ParamByName('pic').LoadFromStream(Stream,ftBlob);
ADOQuery1.Parameters.ParamByName('pictype').Value := pictype;
ADOQuery1.ExecSQL;
finally
Stream.Free;
end;
except
InfoMessage('保存图片失败!');
exit;
end;


给你个现成的,我的数据库是sql
------解决方案--------------------
代码没有什么问题(myjpeg资源要释放),估计问题所在于你用 TDBImage 绑定到 TClientDataSet 的 pic 字段进行显示图片,如有,把界面上的TDBImage删除或者把其DataSource清空,然后再运行你的代码,确认问题所在。
------解决方案--------------------
DBImage好像不能显示JPEG格式,你可以用Image进行显示,简单的做法就是记录中增加图片格式信息,便于在显示的时候处理。