如何调用access中存储的图片字段,比如说在access中存有学号,姓名,图片字段如果我
查询学号结果马上图片字段(不要用打开对话窗口),最好能给个小例子。

解决方案 »

  1.   

    如果是bmp格式的直接与TDBImage关联即可;否则就要用流了,显示在TIMage上
      

  2.   

    aQuery.SQL.Add('Select fileName, fileData From Table Where ID = ''' + ID +'''' );
    aQuery.Open;
    TblobField(aQuery.fieldbyname('fileData')).SaveToFile(
            aQuery.fieldbyname('fileName').asString);
    image1.Picture.LoadFromFile(fileName) ; //使用文件名字段可以不用区别Bmp,Jpg类型
    image1.Height := image1.Picture.Graphic.Height ; //image1最好放在ScrollBox里
    image1.Width := image1.Picture.Graphic.Width ;
      

  3.   

    赞成 li_zhifu(东北人) !!
      

  4.   

    同意 li_zhifu(东北人)
    给一个例子你参考!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, DBTables, StdCtrls, ExtDlgs, ExtCtrls;type
      TForm1 = class(TForm)
        GroupBox1: TGroupBox;
        DataSource1: TDataSource;
        Table1: TTable;
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Edit4: TEdit;
        Label3: TLabel;
        Label4: TLabel;
        Image1: TImage;
        Button2: TButton;
        OpenPictureDialog1: TOpenPictureDialog;
        procedure FormCreate(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        table1.Active:= true;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        if OpenPictureDialog1.execute then
            image1.picture.loadfromfile(OpenPictureDialog1.filename);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
        bmp: TBitmap;
    begin
        bmp:=TBitmap.Create;
        bmp.Assign(Image1.Picture.Bitmap);
        table1.Append;
        table1.fieldbyname('name').asstring:=edit1.text;
        table1.fieldbyname('telephone').asstring:=edit2.text;
        table1.fieldbyname('address').asstring:=(edit3.text);
        table1.fieldbyname('zip').asstring:=(edit4.text);
        table1.fields[4].assign(bmp);
        table1.post;
        bmp.free;
    end;end.
    有问题请发信息到我的E-mail:[email protected]
      

  5.   

    楼上的这样做,只有BMP文件可以应用,遇到JPG就完了. 对用户尽责还是要考虑多一点
      

  6.   

    用下面代码自己保存和读取图片:
    procedure TForm1.SavePicture;
    var
      MyJPEG : TJPEGImage;
      MS: TMemoryStream;
    begin
      MS:=TMemoryStream.Create;
      MyJPEG:=TJPEGImage.Create;
      try
        MyJPEG.Assign(DBImage1.Picture.Graphic);
        MS:=TMemoryStream.Create;
        MyJPEG.SaveToStream(MS);
        MS.Position:=0;
        TBlobField(ADOQuery1.FieldByName('pic')).LoadFromStream(MS);
      finally
        MS.Free;
        MyJPEG.Free;
      end;
    end;procedure TForm1.LoadPicture;
    var
      MyJPEG : TJPEGImage;
      MS: TMemoryStream;
    begin
      MS:=TMemoryStream.Create;
      MyJPEG:=TJPEGImage.Create;
      ADOQuery1.Open;
      try
        TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(MS);
        MS.Position:=0;
        MyJPEG.LoadFromStream(MS);
        DBImage1.Picture.Bitmap.Assign(MyJPEG);
      finally
        MS.Free;
        MyJPEG.Free;
      end;
    end;如果是在Access里插入的图片会有些问题,Access自己在数据前面加了一些信息。
      

  7.   

    上面的代码要 uses jpeg;
    对JPG和BMP图片都适用。
      

  8.   

    to sysu(死树):我试了怎么还是不行,能不能说得详细一些,我还刚入门不是太懂,谢谢了!
      

  9.   

    http://www.csdn.net/Develop/article/16%5C16172.shtm