procedure TForm1.DBImage1Click(Sender: TObject);
begin
  //DM.Person_infoADO.Locate('ID','101',[]);
  if OpenDialog1.Execute then
    begin
      DM.Person_infoADO.Edit;
      DM.Person_infoADOPicture.LoadFromFile(OpenDialog1.FileName);
    end;
end
   以上程序是别人代码里用于完成图片的保存功能的,有关联的控件有ADOConnection1,ADOTable,DataSource,DBImage和OpenDialog。可是我用的时候总是报这句有错误:DM.Person_infoADOPicture.LoadFromFile(OpenDialog1.FileName);
我改成
DM.Person_infoADO['Picture'].LoadFromFile(OpenDialog1.FileName);
后,不报语法错误可是在保存图片时会报'Invalid variant operation'这句错误。
   之后我对OpenDialog的Filter添加图片的格式,在语句中加入DM.Person_infoADO.Locate('ID','101',[]);依然没有用。总是报'Invalid variant operation'这个错误。
   对此我仔细研究对方代码依然没有结果,请高手指点一二。
   Thank you。

解决方案 »

  1.   

    只能使用BMP位图的
    检查看看http://lysoft.7u7.net
      

  2.   

    uses jpeg;
    保存Image1中的图象至数据库 :
    var 
      Ms:TmemoryStream;
      jpg:Tjpegimage;
    begin
      ms:=TmemoryStream.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms) ;
      Ms.Position :=0;
      ADOquery1.append;
      TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
      ADOquery1.Post;
      Ms.Free ;
      jpg.free;
    end;
    从数据库中读取图象到image2中:
    Var
      Ms:TStringStream;
      jpg:Tjpegimage;
    begin
      Ms:=TstringStream.Create('');
      TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);
      Ms.Position :=0;
      Jpg.LoadFromStream(Ms);
      Image2.Picture.Assign(Jpg);
      Ms.Free;
      jpg.free;
    end;///也许楼主需要,看吧!..  
      

  3.   

    Thank you.
       请问楼上的,你用了哪些控件。
      

  4.   

    什么类型?能说清楚些吗?我保存的图片是Bmp的啊.
      

  5.   

    保存的是数据流,就是把图像保存为2进制的数据。如果用的是access数据库picture的数据类型为ole对象就可以实现图像的保存和读取啦。我曾用过“ gxgyj(杰克.逊)”的方法,调试能通过。
      

  6.   

    我用的ACCESS用的是OLE对象。存不进去的原因是不是OpenDialog的Filter的参数设置问题。但是我在里面添加了All(*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf) *.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf
    这样的参数进去啊。哭啊!
      

  7.   

    TBlobField请问这个是什么,为什么总是这个上面出错?
      

  8.   

    TBlobField请问这个是什么,为什么总是这个上面出错?
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    TBlobField是Blob字段类型(定义在DB.pas单元)如果引用出错,则需要  USES DB