程序运行没有问题,可以打开图片,在保存的时候显示保存到数据库(access)中了,但是打开数据库什么也没有,这是怎么回事情?更不能从数据库中再次读取了?tp表(ID(自动),编号,名称,日期。)代码如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, DB, jpeg,ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    DBImage1: TDBImage;
    Image1: TImage;
    ADOTable1: TADOTable;
    OpenPictureDialog1: TOpenPictureDialog;
    SavePictureDialog1: TSavePictureDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
   openpicturedialog1.Execute ;
image1.Picture.LoadFromFile(openpicturedialog1.FileName);end;procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Insert;
adotable1.FieldByName('编号').AsString:=edit1.Text ;
adotable1.FieldByName('名称').AsString :=openpicturedialog1.FileName ;
adotable1.FieldByName('名称').Assign(image1.Picture);
adotable1.Post;end;end.

解决方案 »

  1.   

    adotable1.FieldByName('名称').AsString :=openpicturedialog1.FileName ;
    adotable1.FieldByName('名称').Assign(image1.Picture);//这里出错
      

  2.   

    procedure TfrmDataInput.DataBaseToImage(Field: TField);
    var
      ADOData : TADOBlobStream;
      JPGImg  : TJPEGImage;
    begin
      ImagePhoto.Picture.Bitmap := nil;  if not Field.IsNull then
      begin
         ADOData := TADOBlobStream.Create(TBlobField(Field),bmRead);     JPGImg := TJPEGImage.Create;
         try
           JPGImg.LoadFromStream(ADOData);
           ImagePhoto.Picture.Assign(JPGImg);
         finally
           ADOData.Free;
           JPGImg.Free;
         end;  end;
    end;procedure TfrmDataInput.ImageToDataBase(Field: TField);
    var
        JPGImg  : TJPEGImage;
        ADOData : TADOBlobStream;
    begin
        if not Assigned(ImagePhoto.Picture) then Exit;
        JPGImg := TJPEGImage.Create;
        ADOData := TADOBlobStream.Create(TBlobField(Field), bmWrite);
        try
          try
            JPGImg.Assign(ImagePhoto.Picture);
            JpgImg.SaveToStream(ADOData);
          except      end;
        finally
          JPgImg.Free;
          ADOData.Free;
        end;
    end;读取:
    DataBaseToImage(FieldByName('Photo'));保存:
    ImageToDataBase(FieldByName('Photo'));