有一个ACCESS表,其中有2个字段(ID,PIC)。
PIC我设的为OLE类型。我在ACCESS中的PIC字段上,直接用右键选择插入,然后选择了一个JPG文件,这时字段上显示的值为“包”。然后用Delphi,增加DBImage控件,还有数据源。当DBImage与数据源绑定时提示“Bitmap image is not valid”。我试过了,向ACCESS中插入BITMAP文件也是这样的。同样的方法我在SQL Server2000上正常通过。请问这是怎么回事,如何才能向ACCESS中增加图像,并正确显示出来。

解决方案 »

  1.   

    给你个例子,数据库是access的,存储图片的字段设置为ole对象。如果还有不明白的,你可以搜索以前的帖子,关于数据库中存储图像的问题,有很多。关于“Bitmap image is not valid”,你存储的图像不是bmp格式吧,如果是jpg,在头文件那里uses jpegfunction TfrmSbManager.InsertSbTb: Boolean;
    var
    sqltext : string;
    begin
       //添加设备
       sqltext := '';
       Memo1.Lines.SaveToFile('c:\tempMemo.txt');
       with dtmd.qyinsertsb do
       begin
         Close;
         SQL.Clear;     if PicterFilename <> '' then
         begin
           SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz,tp)');
           SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz,:#tp)');
         end else begin
           SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz)');
           //
           SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz)');
           //  
         end;
         Parameters.ParamByName('#sbid').Value := Trim(edSbid.Text);
         Parameters.ParamByName('#sbname').Value := Trim(edSbname.Text);
         Parameters.ParamByName('#gmdate').Value := FormatDateTime('yyyy-mm-dd',dtpkGmrq.Date);
         Parameters.ParamByName('#dj').Value := StrToFloat(edDj.Text);
         Parameters.ParamByName('#sl').Value := StrToFloat(EdSl.Text);
         Parameters.ParamByName('#fpsl').Value := 0;
         Parameters.ParamByName('#cjname').Value := Trim(edCj.Text);
         Parameters.ParamByName('#cfdb').Value := Trim(edDb.Text);
         Parameters.ParamByName('#tel').Value := Trim(edTel.Text);
       //  Parameters.ParamByName('#memo').DataType := ftMemo;
         Parameters.ParamByName('#bz').Value := Memo1.Text;
         if PicterFilename <> '' then
           Parameters.ParamByName('#tp').LoadFromFile(PicterFilename,ftBlob);
         try
           ExecSQL;
           Result := true;
         except
           Result := false;
         end;   end;
    end;
      

  2.   

    我就是不明白,我存入数据库中的就是BMP图像,为什么会出现“Bitmap  image  is  not  valid”的错误呢?我存入的明明是呀。
      

  3.   

    用ado驱动应该是可以显示图片的
      

  4.   

    我从一本书中看过用assign实现的,可是我忘了怎么用的了,你可以用assign试一下。