`

如何用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文档的存取发生在正确的记录位置。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lee576/archive/2008/02/22/2113578.aspx

分享到:
评论

相关推荐

    如何用DELPHI实现把WORD、EXCEL和图片等存储到数据库

    总之,通过Delphi结合数据库组件和适当的文件处理技术,可以轻松地将Word、Excel和图片等非结构化数据存储到数据库中。在实际项目中,务必根据项目需求选择合适的数据库组件和第三方库,以实现高效、稳定的数据存储...

    Delphi实现emExpore数据库导出实例程序.rar

    在IT领域,数据库管理和数据导出是至关重要的任务,尤其对于开发者来说,能够灵活地将数据库中的信息转换成各种常用格式(如Word、Excel、TXT、XML和DBF)是提高工作效率的重要手段。本实例程序"Delphi实现emExpore...

    SJ.rar_delphi 考试_delphi 考试_考试系统_考试系统 delphi_考试系统 Delphi

    《Delphi技术在考试系统中的应用:连接Word与Excel实现高效出卷》 Delphi,作为一款强大的面向对象的编程语言,一直以来都是开发者们青睐的工具,尤其在开发桌面应用程序时,其高效的性能和丰富的组件库使其独具...

    delphi 图标 学习资料

    10. **数据库与图片结合**:“图片存取+存储过程”可能是指在数据库中存储和检索图片数据,通常通过BLOB字段实现。学习如何通过存储过程与数据库交互,以及如何将图片数据转化为二进制流存储和还原,是数据库应用的...

    delphi经典编程入门

    4. 对象链接和嵌入(OLE):OLE技术允许在单个应用程序中使用多种组件,如创建和编辑Word文档、Excel表格等。通过Delphi,开发者可以创建支持OLE的自定义控件,实现不同应用程序之间的数据共享和交互。 5. 动态链接...

    Access数据库实用教程电子教案-下

    Access数据库实用教程...对于标签中提到的C、Borland C++ Builder (BCB)、Delphi和VC++等其他编程语言,虽然不是本教程的直接内容,但理解数据库原理和操作对使用这些编程语言进行数据库应用程序开发也是非常有益的。

    Delphi ActiveX Form的使用实例

    5. **支持打印报表导出为图片、Excel/Word等格式文本**:在预览模式下,用户可以选择将报表导出为常见的文件格式,如JPEG、PNG等图片格式,或Excel、Word等办公文档格式,方便数据的进一步处理和分享。 王学利在...

    oa.rar_Delphi office_delphi oa_delphi office_oa

    4. **事件驱动编程**:在Delphi中,如何使用事件处理程序与Office应用程序进行实时交互,例如响应Excel单元格的改变或Word文档的保存事件。 5. **多线程处理**:在OA系统中,可能会涉及并发操作,学习如何在Delphi...

    VFP数据共享的几种方法

    VFP支持OLE(Object Linking and Embedding)、ActiveX控件、DLL动态链接库以及外部库资源等功能,使得VFP能够直接调用其他应用程序和数据资源,例如基于Windows的应用软件如VB、Excel、Word和Delphi等,从而极大地...

    ASP连接多种数据库服务器的方法及关键问题

    ### ASP连接多种数据库服务器的方法及关键问题 ...以上内容概括了ASP连接多种数据库服务器的方法及其关键问题,从数据库的选择到具体的连接实现,涵盖了多种技术和工具,为开发者提供了丰富的参考资料和技术指导。

    完整的Delphi办公管理软件

    2. 文档管理:文档管理模块允许用户创建、存储、编辑和分享各种类型的办公文档,可能支持多种格式,如Word、Excel、PDF等,并具备版本控制和权限管理。 3. 任务与日程管理:此功能帮助用户规划和跟踪日常工作,设置...

    ADO数据库控制技术源码

    本教程将深入探讨ADO在操作数据库、Excel和Word中的应用,并提供相关代码和类库。 一、ADO基本概念 1. Connection对象:连接到数据库的核心对象,负责建立和断开与数据源的连接。 2. Command对象:执行SQL语句或...

    Delphi+Access图书管理系统.docx

    - 数据集成:可以方便地与Excel、Word等其他Office组件进行数据交换。 #### 三、系统功能模块设计 根据文档描述,该图书管理系统主要包含以下几个功能模块: 1. **图书管理**:包括图书的添加、删除、修改和查询...

    EMS.QUERYEXPORT.V3.1.FOR.DELPHI

    EMS(可能代表“Enterprise Management Solutions”或类似含义)QueryExport是这个库的核心部分,它提供了在BCB(CodeGear C++ Builder)和DELPHI编程环境中便捷地将数据库中的数据导出到常见Office文档格式的功能。...

    说明大工业 大工业

    综上所述,这个压缩包可能包含的是一套使用Delphi和ASP.NET技术构建的固定资产管理系统,其中可能涉及到了网络通信、数据库操作、用户界面设计和与Word的集成。文件名“acc_excel”可能暗示了与Access数据库或Excel...

    delphi 开发经验技巧宝典源码

    0222 把Excel中的数据保存到数据库中 147 0223 怎样弹出ConnectionString设置页 148 0224 利用ADO获取DELETE后所影响的记录数 148 7.3 业务实现数据处理技术 149 0225 随机产生中奖号码 149 0226 使用...

    delphi 开发经验技巧宝典源码06

    0222 把Excel中的数据保存到数据库中 147 0223 怎样弹出ConnectionString设置页 148 0224 利用ADO获取DELETE后所影响的记录数 148 7.3 业务实现数据处理技术 149 0225 随机产生中奖号码 149 0226 使用...

    delphi网页邮件抓发系统

    4. **数据存储**:抓取到的邮件信息可能会被存储在数据库中,以便于后续分析或操作。这可能涉及到数据库设计,如使用SQL Server或SQLite。 5. **用户界面**:Delphi以其丰富的组件库著称,所以该系统可能有一个直观...

    2021-2022计算机二级等级考试试题及答案No.17492.docx

    10. 数据库对象导出:在Access中,可以将数据库对象导出到其他数据库、Excel、Word,但不能导出到当前数据库内的其他表。 11. Java主类main方法:Java应用的主类需包含`main`方法,其返回类型是`void`。 12. 8位二...

Global site tag (gtag.js) - Google Analytics