开发人事管理软件,把Image1做成动态,要把员工的相片放到Image1上,然后用sql语句插入数据库,我用了几种方法都不好使,请问高手们如何把Image1控件做成动态(用一个Button1控件,点击Button1按扭,找到相片文件,把相片贴到mage1上,然后用sql语句插入数据库),语句如何写,越详细越好,如有别的好方法请介绍,100分双手送上,急!急!急!

解决方案 »

  1.   

    入库,出库
    var    aStream1          : TStream;
        jpg               : tjpegimage;    //在uses 加入 jpeg,db 单元
      
    插入
    jpg := tjpegimage.Create();
          try
                  dm.Query_image.open;
                  dm.query_image.insert;
                  aStream1 := dm.query_image.CreateBlobStream(dm.query_image.FieldByName('content'),bmReadWrite);
                  jpg.LoadFromFile(name);
                  jpg.SaveToStream(aStream1);
                  aStream1.Free;
                             dm.query_image.Post;       finally
          jpg.Free;
          end;取出                     if dm.query_image.State <> dsBrowse  then exit;
                         if dm.query_image.FieldByName('content').IsNull then Exit;  //判断状态,content是我表里存放jpeg的field
                         dm.query_image.open;
                    
                         aStream1 := dm.query_image.CreateBlobStream(dm.query_image.FieldByName('content'), bmRead);
                         try
                            aStream1.Position := 0;
                            jpg:= tjpegimage.Create();
                            try
                               jpg.LoadFromStream(aStream1);
                               jpg.SaveToFile(ipath); //ipath:string 存放路径与文件名
                            finally
                               jpg.Free;
                            end;
                         finally
                            aStream1.Free;
                         end;
                    end;
      

  2.   

    原来发了一个这贴,没有理,后来只好自己摆平了,给你看看思路吧!一、在服务器上创建一个共享目录,直接用copyfile('a.bmp','\\server\share\a.bmp')来完成,但这样会出现一个问题是,复制的时候会报如下的错“无复制a.bmp,无法更新密码,提供给新密码的值包含密码中不允许的值!”。但我只要把服务器server改为本机的地址的话,就不会出错,我想可能是本机不需要认证吧!
      不知道哪位高手知道如果解决这个问题,我的代码如下:
    Var
      F:TShFileOpStruct;
    begin
      F.wnd:=Application.Handle;
      F.wFunc:=FO_COPY; {操作方式}
      F.pFrom:=PChar('a.bmp'+#0#0);
      F.pTo:=PChar('\\server\share\a.bmp'+#0#0);
      F.fFlags:=FOF_ALLOWUNDO OR FOF_RENAMEONCOLLISION;
      if  ShFileOperation(F)=0 then
        showmessage('copy success!');
    二、采用FTP方式对文件进行传输,但是这样的话,需要在服务器配置FTP服务器!
    三、采用WINDOWS SOCKET文件传输方式,这种方式的话需要用编写一个服务器端程序,对客户端提出的连接进行响应。
    四、采用ASP/PHP的文件传输方式,在DELPHI的程序中内置ASP/php程序,采用WEB方式对文件进行传输!如果哪位高手有兴趣的话,可以分别将这些方法实现过程写出来!我现在采用最后一种方式,等写完了以后就可以贴出来了!