To Crab
不需要用Ole 对象的,用Server页的Wordapplication 和Worddocument 就可以了
当然用ole对象也可以的!但不管用什么 都需要在你的数据库中把定义blob字段
因为只有blob字段才能存放word文档的!(而blob字段也有限制好象是不超过10M的东西)
我作的代码如下:
unit oletest;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, OleCtnrs, ExtCtrls, Buttons, Menus;
type
TForm5 = class(TForm)
ole: TOleContainer;
Panel2: TPanel;
Panel1: TPanel;
MainMenu1: TMainMenu;
N1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses unit3;
{$R *.DFM}
//从数据库中调用。会打开word编辑文件。
procedure TForm5.FormShow(Sender: TObject);
var oleDY:Tstream;
begin
if form5.tag=1 then
oleDY:=form3.basic.CreateBlobStream(form3.basic.FieldbyName('blob1'),bmread)
else //basic是一个表放在form3中
oleDY:=form3.basic.CreateBlobStream(form3.basic.FieldbyName('blob2'),bmread);
if oledy.size>0 then
begin
OLE.LoadFromSTREAM(OLEDY);
ole.DoVerb(ovshow);
oleDY.free;
end
else
begin
ole.CreateObject('word.document',false);
ole.DoVerb(ovshow);
end;
end;
//存盘退出
procedure TForm5.N1Click(Sender: TObject);
var stre:tmemorystream;
begin
stre:=TMemoryStream.Create ;
ole.SaveToStream(stre);
form3.basic.edit;
if form5.tag=1 then
TBlobField(form3.basic.FieldbyName('blob1')).LoadFromStream(stre)
else
TBlobField(form3.basic.FieldbyName('blob2')).LoadFromStream(stre);
form3.basic.post;
stre.free;
ole.close;
form5.close;
end;
end.
本程序是数据库的用ole打开很存取,然后至于把word表格中的数据存入到数据库中你可以用
我上面的方法
var table
levariant;
str1:variant;
begin
table:=wa1.documents.items(1)//去摸版的第一个表格。
str1:=adotable1.Fields[24].AsVariant ;//从数据库中取相应的字段的值。
table.cell(1,1).range.text:=str1 //表格的你需要的位置放入该字段的内容
end;
然后存盘退出就可以了!!!(有什么问题再说吧)