在添加时提示:project rs1.exe raised exception class einvalidgraphic with message 'bitmap image is not valid',process stopped.use step or run to continue.
前面有看过一份类是的帖子,有们大仙说是BLOB字段操作的问题,用了他提供的方法也不形呀,他的代码如下是:Table1.Open();
Table1.Edit();
TBlobField(Table1.FieldByName('照片')).LoadFromFile(filename);
Table1.Post();//错误提示是一样的.
我的数据库是ACCESS的照片字段属性是OLE对象.是不我的TABLE1.APPEND各TABLE1.EDIT的用法及先后有矛盾呀.procedure TForm2.N2Click(Sender: TObject);//保存数据
begin
//在RS表中添加员工信息.
with table1 do
  begin
    open;

解决方案 »

  1.   

    不好意思掉了一部分代码.
    procedure TForm2.N2Click(Sender: TObject);//保存数据
    begin
    //在RS表中添加员工信息.
    with table1 do
      begin
        open;
        append;
        fieldbyname('应征职位').asstring:=edit1.text;
        fieldbyname('员工编号').asinteger:=strtoint(edit2.text);
        fieldbyname('任职部门').asstring:=edit67.text;
        fieldbyname('现任职务').asstring:=edit68.text;
        fieldbyname('登记日期').asdatetime:=datetimepicker1.date;
        fieldbyname('是否在职').AsString:=combobox3.Text;
        fieldbyname('员工姓名').asstring:=edit3.text;
        fieldbyname('性别').AsString:=combobox1.text;
        fieldbyname('出生年月').AsDateTime:=datetimepicker2.Date;
        fieldbyname('籍贯').asstring:=edit7.Text;
        fieldbyname('民族').AsString:=edit4.text;
        fieldbyname('视力状况').asstring:=edit5.text;
        fieldbyname('身高/cm').AsString:=edit6.Text;
        fieldbyname('体重/kg').AsString:=edit8.Text;
        fieldbyname('身份证号码').AsString:=edit9.Text;
        fieldbyname('爱好及特长').AsString:=edit10.Text;
         post;
        close;
       end;procedure TForm2.SpeedButton1Click(Sender: TObject);  //打开并保存照片
    var Picture1:Tpicture;
    begin
    Picture1:=TPicture.Create;
     If OpenPictureDialog1.Execute Then
     begin
       table1.open;
       TABLE1.EDIT;
       Picture1.LoadFromFile(OpenPictureDialog1.FileName);     //导入照片
       TABLE1.FieldByName('图片').Assign(Picture1);
       table1.post;
     end;
      

  2.   

    var
      FParam: TParameter;
      ImageStream: TStream;
    begin
      ADOQuery1.SQL.Text := 'Insert Into [Table] Values ( :Image)';
      FParam := ADOQuery1.Parameters.FindParam('Image');
      if Assigned(FParam) then
      begin
        ImageStream := TFileStream.Create('E:\My Document\My Pictures\200421495936.jpg', fmOpenRead);
        try
          FParam.LoadFromStream(ImageStream, ftBlob);
          ADOQuery1.ExecSQL;
        finally
          ImageStream.Free;
        end;
      end;
    end;
      

  3.   

    先转换成bmp 存进去 应该可以吧?
      

  4.   

    var bmp1:TBitmap;
         jpg1:TJpegImage;
     bmp1:=TBitmap.Create;
        jpg1:=TJpegImage.Create;
        try
        jpg1.LoadFromFile(OpenPictureDialog1.FileName);
        bmp1.Assign(jpg1);
        dbImage2.Picture.Bitmap.Assign(bmp1);
        finally
         jpg1.Free;
         bmp1.Free;
        end;然后把你上面的增加代码
    FieldByName('htnr').Assign(Image2.Picture);
    写在增加的 里面就可以了
      

  5.   

    不行呀,我本来打开的就是BMP格式呀!
      

  6.   

    用流 var
    msmem:TmemoryStream;
    jpg:TJpegImage;
    begin
     if cxImage1.Picture.graphic<>nil then
              begin
                msmem:=TmemoryStream.Create;
                Jpg:=TjpegImage.Create;
                jpg.Assign(cxImage1.Picture.Graphic);
                jpg.SaveToStream(msmem) ;            // 1
                msmem.Position :=0;
                TBlobField(FieldByName('图片')).LoadFromStream(msmem);
                Msmem.Free ;
                jpg.Free;
                end;
    end;读
    procedure TF_hw_cp.DBGridEh1CellClick(Column: TColumnEh);
    var
    ms:TStringStream;
    Jpg:TJpegImage;
    begin
     if ADQ_BM_PM.FieldByName('图片').AsString<>'' then
     begin
       ms:=TstringStream.Create('');
      Jpg:=TJpegImage.Create;
      TBlobField(ADQ_BM_PM.FieldByName('图片')).SaveToStream(ms);
      jpg.LoadFromStream(ms);
      ms.Position :=0;
      Jpg.LoadFromStream(ms);  cxImage1.Picture.Assign(jpg); cxImage1.Visible:=true;
      end else
      cxImage1.Picture:=nil;end;