| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
龙腾教程网  
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
 
  您当前位置:您现在的位置: 龙腾软件教程网 >> 文章中心 >> 应用程序 >> Delphi教程 >> delphi高级技巧 >> 文章正文>>>>>> 
DELPHI实现把WORD、EXCEL和图片等存储到数据库中
用image字段保存这些文档。   
  var   
      word_stream:   TMemoryStream;   
      filename:   string;   
  begin   
      if   odgDoc.Execute   then//odgDoc:OpenDialog   
      begin   
          filename   :=   ExtractFileName(odgDoc.FileName);   
          word_stream   :=   TMemoryStream.Create;   
          word_stream.LoadFromFile(odgDoc.FileName);   
          word_stream.Position   :=   0;   
          cdsPACT.Append   
          cdsPACT.FieldByName(’DocName’).Value   :=   filename;   
          TBlobField(cdsPACT.FieldByName(’PactText’)).LoadFromStream(word_stream);   
          cdsPACT.Post;   
          word_stream.Free;   
      end;   
  end; 

----   目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具。在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可避 免;即从以Delphi开发的前台界面输入图形,并保存到相应的数据库字段中。在这种形式的图形处理中,BMP文件的处理比较简单,因为Delphi本身 有Image和DBImage构件,用这些构件与数据库中可以保存图形的大型字段BLOB比较容易地进行数据交换。以这种方式进行图形处理已应用在许多 MIS软件中,包括处理人员照片的人事档案系统等。       
  ----   但是,BMP文件一般都比较大。而且有时要录入的是自己在计算机上画的简图,并伴随大量文字说明。这种情况用Win95中的画图板等处理BMP文件的工具 处理就比较困难。一般应用人员都喜欢用WORD画图和写说明文字,然后保存到数据库中。     
  ----   经过一段时间的摸索,我们解决了这个问题,并经过完善,在应用中运行较好。程序如下:     
  procedure   TsampleForm.OpenDOCClick(Sender:   TObject);   
  var   
      MemSize:   Integer;   
      Buffer:   PChar;   
      Myfile:   TFileStream;   
      Stream:   TBlobStream;   
  begin   
      OpenDialog1.Filter:=’WORD文档(*.DOC)|*.DOC’;{从对话窗选择文件}   
      if   OpenDialog1.Execute   then     
      begin   
          Myfile:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);   
          with   table1   do       {‘table1’为含BLOB字段的表名}   
          begin   
              Open;   
              Edit;   
              Stream   :=   TBlobStream.Create(FieldByName(’Doc’)   as   TBlobField,   bmWrite);{‘Doc’为BLOB字段名}     
              MemSize   :=   MyFile.Size;   
              Inc(MemSize);   {Make   room   for   the     buffer’s   null   terminator.}   
              Buffer   :=   AllocMem(MemSize);               {Allocate   the   memory.}     
              try   
                  Stream.Seek(0,   soFromBeginning);     {Seek   0   bytes   from   the   stream’s   end   point}   
                  MyFile.Read(Buffer^,MemSize);   
                  Stream.Write(Buffer^,MemSize);   
              finally   
                  MyFile.Free;   
                  Stream.Free;   
              end;   
                        try   
                          Post;   
                        except   
                          on   E:   EDatabaseError   do   
                    if   HandelException(E)<   >0   then     
                                                  exit   
                  else   
                  raise;   
                        end;   
            end;   
            Doc_ole.CreateObjectFromFile(OpenDialog1.FileName,False);   
            Doc_ole.Run;{Doc_ole为ToleContainer构件名}   
        end;   
  end;   
    
  ----   以上为向数据库中写入的程序,应用中从对话窗取出文件在ToleContainer构件中显示的同时存入数据库。     
  procedure   TsampleForm.GetDocClick(Sender:   TObject);   
  var   
      MemSize:   Integer;   
      Buffer:   PChar;   
      Myfile:   TFileStream;   
      Stream:   TBlobStream;   
  begin   
          Myfile:=TFileStream.Create(’c:\temp.tmp’,fmCreate);   
          with   Query1   do   
          begin   
              Stream   :=   TBlobStream.Create(FieldByName(’Doc’)   as   TBlobField,   bmRead);   
              MemSize   :=   Stream.Size;   
              Inc(MemSize);   {Make   room   for   the   buffer’s   null   terminator.}   
              Buffer   :=   AllocMem(MemSize);           {Allocate   the   memory.}   
              try   
                  Stream.Read(Buffer^,MemSize);   
                  MyFile.Write(Buffer^,MemSize);   
              finally   
                  MyFile.Free;   
                  Stream.Free;   
              end;   
          end;   
              if   FileExists(’c:\temp.DOC’)   then     
      DeleteFile(’c:\temp.DOC’);   
              if   FileExists(’c:\temp.tmp’)   then     
              begin   
                  RenameFile(’c:\temp.tmp’,   ’c:\temp.DOC’);   
                  Doc_ole.CreateObjectFromFile(’c:\temp.DOC’,False);   
                  Doc_ole.Run;   
              end;   
  end;   
  ----   以上程序为从数据库从将WORD文档取出,并放在temp.doc的临时文件上并在ToleContainer构件中显示。     
  ----   在程序的其他部份应准确控制表记录指针,使WORD文档的存取发生在正确的记录位置。   
上一篇:
  • 上一篇文章:
  • 下一篇
  • 下一篇文章: 没有了
  • 收藏此文到百度搜藏 百度搜藏| 新浪VIvi| 365key| Younote| 博采中心| 你好BLOG| 亿友网摘| 和讯网摘|
    相关文章    
    Delphi面向对象的编程方法(四)
    Delphi面向对象的编程方法(三)
    Delphi面向对象的编程方法(二)
    Delphi面向对象的编程方法(一)
    delphi twebbrowser构件编程方法详解
    Delphi的屏幕抓图技术的实现
    Delphi中数据的自动录入
    如何用Delphi创建快捷方式
    Delphi 2006新增特性解析
    Delphi图形显示技巧
     
     
     
    最新文章
    普通文章 DELPHI实现把WORD、EXCEL和图片等最新文章
    普通文章 ajax实现分页控件代码最新文章
    普通文章 javascript动态更改DropDownList最新文章
    普通文章 javascript 的window.open()的参最新文章
    普通文章 photoshop绘制森林中的精灵最新文章
    普通文章 photoshop设计卡通饼干字体最新文章
    普通文章 SnagIt批量捕获网络图像技巧最新文章
    普通文章 迅雷文件管理实用招数最新文章
    普通文章 基于VLAN技术的校园一卡通管理最新文章
    普通文章 图解校园网局域网组网方案剖析最新文章
     
    热门文章
    推荐文章 Photoshop绘制卡通动漫娃娃最新文章
    推荐文章 Photoshop绘制逼真绚丽的金鱼
     
     
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 

    版权所有2006-2008 龙腾教程网