我想將DBImager中顯示的圖片保存到數庫中,用如下代碼卻提示有錯[Error] tproductlist.pas(2004): Incompatible types: 'Variant' and 'TPicture'
fieldvalues['imager_icon']:=dbimage1.picture;其後綴名.picture是否有錯,如果保存後要將其顯示在DBImager中用如下命令是否可以
dbimager1:=fieldbyname('image_icon').as圖片類型。
我用的是adoquery,image_icon類型已設為image,長度為16,
以上兩點請高手指點

解决方案 »

  1.   

    重要在与解决问题,分多少无所谓。
    ACCESS数据库
    procedure TForm1.Btn_SaveClick(Sender: TObject);
    var 
    MyJPEG : TJPEGImage;
    MS: TMemoryStream;
    begin
    MyJPEG := TJPEGImage.Create;
     try
       with MyJPEG do
       begin
          Assign(ViewPic.Picture.Graphic);
          MS:=TMemoryStream.create;
          SaveToStream(MS);
          MS.Position:=0;
          ADOTable1.Append;
          TBlobField(ADOTable1.FieldbyName('file')).LoadFromStream(MS);
          ADOTable1.FieldByName('name').AsString:=Edit_Name.Text;
          ADOTable1.Post;
          Messagebox(Getactivewindow(),'图像保存完毕!','保存',mb_ok);
       end;
       finally
          MyJPEG.Free;
       end;
    end;读取
    procedure TForm1.Btn_ViewClick(Sender: TObject);
    var
       tempstream:TStringStream;
       tempjpeg:TJPEGImage; 
    begin
       try
          tempstream:=TStringStream.Create(' ');
          TBlobField(ADOTable1.FieldByName('file')).SaveToStream(tempstream);
          tempstream.Position:=0;
          tempjpeg:=TJPEGImage.Create;
          tempjpeg.LoadFromStream(tempstream);
          ViewPic.Picture.Bitmap.Assign(tempjpeg);//VIEWPIC是TIMAGE
          Edit_Name.Text:=ADOTable1.FieldByName('name').AsString;
       finally
          tempstream.Free;
          tempjpeg.Free;
      end;
    end;
      

  2.   

    sandyboy(雨霆):我用的是SQL數據庫,圖片已顯示在DBImage中,代碼修改後還是不行,請幫忙檢查
    procedure Ttproductlist01.ImageSaveClick(Sender: TObject);
    var
       MyJPEG : TJPEGImage;
       MS: TMemoryStream;
      adoimager:tadoquery;
      imagerno:string;
    begin
      adoimager:=tadoquery.Create(self);
      adoimager.Connection :=cudb01.ADOConnection1 ;
      adoimager.SQL.Text :='select * from imager_list ';
      MyJPEG := TJPEGImage.Create;
     try
       with MyJPEG do
       begin
          Assign(dbimage1.Picture.Graphic);
          MS:=TMemoryStream.create;
          SaveToStream(MS);
          MS.Position:=0;
          adoimager.Append;
          TBlobField(adoimager.FieldbyName('imager_icon')).LoadFromStream(MS);//TBlobfield是什麼意思????
          adoimager.FieldByName('imager_name').AsString:=Edit_name.Text;
          adoimager.Post;
          Messagebox(Getactivewindow(),'圖像保存完畢!','保存',mb_ok);
       end;
       finally
          MyJPEG.Free;
       end;
    end;