数据库:Access2000
表    :kaoti
字段  :image----ole对象1.不知道image字段里图的格式(库是客户提供的,不能更改,曾问图的格式说是windows预览图格式...晕),如何用ADO查询并在窗体上得出。
2.向Access中插入二进制数据后是不是数据本身就已经修改了,以致读取的时候报错?
3.假如我只想把图片的路径保存到数据库中,该如何存?现在紧要的是问题1的解决方法,一旦解决,马上补分
附代码 请大师们帮忙!uses jpeg; //不知图的格式,且试试procedure TFrm_Drill.FormShow(Sender: TObject);
var
  MyJPEG: TJPEGImage;
  MS: TMemoryStream;
begin
  with TADOQuery(dsDetail.DataSet) do
  begin
    Close;
    sql.Clear;
    SQL.Add('select * from kaoti where ' + '' + kind + '' + ' order by ID'); //sql无错
    Open;
    if TBlobField(FieldByName('Image')) <> nil then
    begin
      try
        ms := TMemoryStream.Create;
        TBlobField(TADOQuery(dsDetail.DataSet).FieldByName('Image')).SaveToStream(ms);
        ms.Position := 0;
        MyJPEG := TJPEGImage.Create;
        MyJPEG.LoadFromStream(ms);           // 错在这和下一行
        img2.Picture.Bitmap.Assign(MyJPEG);  // 
      finally
        ms.Free;
        MyJPEG.Free;
      end;  //end try
    end;
  end;
end;错误为:JPEG error #53 或JPEG error #42望前辈们指教,并说说原因,好让兄弟有前车之鉴。

解决方案 »

  1.   

    问题1:
    ms := TMemoryStream.Create;
            TBlobField(TADOQuery(dsDetail.DataSet).FieldByName('Image')).SaveToStream(ms);
            ms.Position := 0;
    到这一不的时候,ms.savetofile('C:\a');然后用N种图象浏览软件试着打开这个文件,应该可以解决。代码出错是因为它不是jpeg格式的。
    问题2:
    以前是听说个这个说法,但从我使用的过程来看没有发现这个问题,我用的是access2003的数据库。
    问题3:
    这...就不用说了吧
      

  2.   

    可以得到图片的类型的一个利用TBlobStream在数据库中保存BMP和JPG图片的例子
    http://www.aidelphi.com/6to23/Docu/BlobStream.zip
      

  3.   

    delphi可以不用数据流
    从数据库中读取数据存到文件Filename:
     TBlobField(TADOQuery(dsDetail.DataSet).FieldByName('Image')).SaveToFile(Filename);将文件Filename保存到数据库:
    TBlobField(TADOQuery(dsDetail.DataSet).FieldByName('Image')).LoadfromFile(Filename);
      

  4.   

    解决了
    结贴 
    用的bluekitty的方法
    已奏效了 为.emf 增强型图元文件
    哈哈哈哈哈 
    cuteant的例子还没有看 
    谢谢两位前辈