1、如何把word文档用流的办法保存在数据库中(就是我可以任意选择一个word文档把它保存到sql server 2000)
2、从数据库中怎么调出保存好的word文档,调出来后进行修改后又怎么保存回去
我这里有个做法,但老是行不通,我保存是以流的形式来保存,但老出问题,从数据库中调出来修改我的想法是以流的形式保存,然后显示在临时的word文档中进行修改后替换掉原来的文件,但我在具体实现我不知如何下手,请求各位大侠帮助,最好给个例子,那位大侠给出例子除了给这100分外我再开帖子给分!真的很急!!!
2、从数据库中怎么调出保存好的word文档,调出来后进行修改后又怎么保存回去
我这里有个做法,但老是行不通,我保存是以流的形式来保存,但老出问题,从数据库中调出来修改我的想法是以流的形式保存,然后显示在临时的word文档中进行修改后替换掉原来的文件,但我在具体实现我不知如何下手,请求各位大侠帮助,最好给个例子,那位大侠给出例子除了给这100分外我再开帖子给分!真的很急!!!
解决方案 »
- 如何获得Tif文件的属性
- 客户端提交时出现问题
- 一个简单序号的问题,我的问题从来都是一解决就给分的!
- ★ 好难!WebBrowse好手帮忙,请问如何在有Frame的网页中操作输入框及按钮?找了好多资料都一样,不适用于带有Frame的页面!【200】★
- sql Server中能否存储jpg图像文件?
- Intraweb也属于“事件驱动的WEB开发模型”吗?????????????????????
- 求助-根据名称调用窗口
- 菜鸟问一个简单小问题,好急!
- *****我毕设后要翻译一篇英文技术资料,请问各位前辈,介绍几个英文的技术论坛网站,或者提供一些英文资料,谢谢
- DBComboBox的问题
- 各位大哥,精通DELPHI和ORACLE的快来啊,帮帮我!!!!!!!!!!!
- 如何让Edit控件只能接受数字和小数点,并且小数点只能有一个?请教!
http://www.powerba.com/develop/delphi/article/20000913008.htm
本方案的不同之处,在于数据入库前先进行格式的转换。格式的转换是通过OLE控件完成的。即,先创建OLE对象,然后入库。示例代码如下:
AOleContainer.CreateObjectFromFile(aFileName);
AoleContainer.SaveToFile(tmpFileName);
AblobField.LoadFromfile(tmpFileName);
这样作的好处是,由于库中直接存储的是OLE格式,所以,在库与OLE控件之间的数据传递将非常方便。在这种情况下,可以通过文件直接传递:数据字段先将数据存到一个临时文件中,然后,OLE控件从临时文件中读取。即:
AblobField.SaveToFile(aFileName);
AOleContainer.LoadFromFile(aFileName);
另外,还可以通过内存流来完成。使用内存流,可减少磁盘操作,大大提高运行效率。即:
AblobField.SaveToStream(aStream);
AOleContainer.LoadFromStream(aStream);
下面是一个简单的例子。一个简单的例子
本例中,采用Paradox数据库。库中有两个字段,一个是字符型,另一个是BLOB型。我们在主Form上放一个OLE控件用于编辑及转换数据。一个Table控件操作数据库。源代码如下:
unit blob01;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBCtrls, OleCtnrs, DBTables, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
Table1: TTable;
OleContainer1: TOleContainer;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
OpenBtn: TButton;
CloseBtn: TButton;
OpenDialog1: TOpenDialog;
LoadBtn: TButton;
Table1Filename: TStringField;
Table1ABlob: TBlobField;
procedure OpenBtnClick(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure LoadBtnClick(Sender: TObject);
procedure Table1AfterScroll(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.OpenBtnClick(Sender: TObject);
begin
Table1.Open; //打开数据库
end;procedure TForm1.CloseBtnClick(Sender: TObject);
begin
Table1.Close; //关闭数据库
end;//打开一个数据文件、创建OLE对象、将对象数据存入数据库
procedure TForm1.LoadBtnClick(Sender: TObject);
var
fn: string;
begin
if OpenDialog1.Execute then begin //打开文件
fn := ExtractFileName(OpenDialog1.FileName);
Table1FileName.AsString := fn;
OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, False); //创建OLE对象
OleContainer1.SaveToFile("tmp"); //将OLE数据存入临时文件
Table1ABlob.LoadFromFile("tmp"); //将OLE数据存入数据库
end;
end;//定义此方法用于显示当前记录中的OLE对象
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
if not Table1ABlob.IsNull then begin
Table1ABlob.SaveToFile("tmp"); //数据存入临时文件
OleContainer1.LoadFromFile("tmp"); //从临时文件中读取OLE对象
end;
end;// 再写一个修改的吧
procedure TForm1.Table1BeforeScroll(DataSet.TDataSet);
begin
if isDirty then //isDirty变量用来测试你的WORD文档是不是已经被修改
begin
OleContainer1.SaveToFile("tmp"); //将OLE数据存入临时文件
Table1ABlob.LoadFromFile("tmp"); //将OLE数据存入数据库
end;
end.
用OleContainer就可以了同意