一个数据库与Word结合的问题(100分)

  • 主题发起人 主题发起人 hrb_online
  • 开始时间 开始时间
H

hrb_online

Unregistered / Unconfirmed
GUEST, unregistred user!
本人近来搞一个试题系统,要把数据库中数据(包含图像),写入Word中,在写入的过程中
遇到如下问题:(望各位大虾给与帮助!)
1、数据在追加时总是会将前面的数据覆盖;
2、怎样可以将Word排版的好一点;
3、在数据库中进行数据(根据一定的条件)查找时,没有很好的方法,望提供数据结构

盼解决!各位大虾,能有关于试题系统抽题方面的例程更好
分不够在加!
 
1.作一个过程将插入点移到文档之后,不知操作word使用ole还是Servers控件?
2.太笼统无法回答
3.sql查询
 
:linsb
1、我用的Server控件,希望给出例程
2、怎样控制布局,如文字的大小、颜色、段落设置、怎样插入一个表格
3、我知道用SQL,但是我想有没有具体一点的做法!
 
1.
//将光标移到文档最后的:
procedure GotoDocEnd(WrdApp: TWordApplication);
var
WdUnit, WdCount, wdExtend: OleVariant;
begin
WdUnit := wdScreen;
wdCount := 10;
wdExtend := EmptyParam;
while true do
if WrdApp.Selection.MoveDown(WdUnit, wdCount, wdExtend) = 0 then break;
end;
2.3太笼统无法回答

 
我插一句,如何将图像字段插入到Word中啊?
 
:yanghaijun
可以利用图像控件做中介,然后在写入Word


;linsb
你有没有关于试题库系统的原程,我现在只差抽题部分,上司又要的很急,麻烦你了

 
to:linsb
我用了你的语句,但是还是无法解决问题,我的语句如下: 麻烦你看一下,问题在那里?
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Word2000, OleServer, DB, ADODB, RxRichEd, DBRichEd,
ExtCtrls, DBCtrls, Clipbrd;

type
TForm1 = class(TForm)
wordDoc: TWordDocument;
WordApp: TWordApplication;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
RxDB: TRxDBRichEdit;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
Button3: TButton;
DBNavigator1: TDBNavigator;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure GotoDocEnd(WrdApp: TWordApplication);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Itemindex, format,TempEmpty: olevariant;
filename, passworddocument, passwordtemplate: olevariant;
writepassworddocument, writepasswordtemplate: olevariant;
confirmconversions, readonly, revert, addtorecentfiles: olevariant;
begin
wordapp.Connect;
wordapp.Visible:=true;
wordapp.Caption:='WORD的应用';
{open document}
filename :='e:/doc1.doc'; //OpenDialog1.filename;
confirmconversions := false;
readonly := false;
addtorecentfiles := false;
revert := true;
passworddocument := '';
passwordtemplate := '';
writepassworddocument := '';
writepasswordtemplate := '';
format := wdopenformatdocument;
wordapp.documents.open(filename, confirmconversions,
readonly, addtorecentfiles, passworddocument, passwordtemplate,
revert, writepassworddocument, writepasswordtemplate, format,TempEmpty,TempEmpty);
itemindex := 1;
worddoc.connectto(wordapp.documents.item(itemindex));
worddoc.Range.InsertAfter('你好!'+#13);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
wordapp.Quit;
wordapp.Disconnect;
close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Clipboard.Clear;
rxdb.SelectAll;
rxdb.CopyToClipboard;
worddoc.Sentences.Last.Paste;
worddoc.Range.InsertAfter(''+#13);
GotoDocEnd(wordapp);
end;

//将光标移到文档最后的:
procedure TForm1.GotoDocEnd(WrdApp: TWordApplication);
var
WdUnit, WdCount, wdExtend: OleVariant;
begin
WdUnit := wdScreen;
wdCount := 10;
wdExtend := EmptyParam;
while true do
if WrdApp.Selection.MoveDown(WdUnit, wdCount, wdExtend) = 0 then break;
end;
end.
 
把调用GotoDocEnd(wordapp);
放在操作之前
》》你有没有关于试题库系统的原程--一般不公开,对不起。
 
:linsb
我按你的方法试了还是不行
 
这是我的程序的一段,没问题的
procedure TForm1.Button3Click(Sender: TObject);
begin
GotoDocEnd(wordapp);
Clipboard.Clear;
rxdb.SelectAll;
rxdb.CopyToClipboard;
worddoc.Sentences.Last.Paste;
worddoc.Range.InsertAfter(''+#13);
end;
是这样吗?
如有问题请写详细一些,或者把程序发给我,我试试。linsb3031@0451.com
 
我这里有一个从dbgrid直接送到word的函数。
但是,图片不能直接用这个函数,因为他送过去的是二进制代码。
如果你要试试,我的email: arjo@163.net
 
修改如下:
procedure TForm1.Button3Click(Sender: TObject);
begin
GotoDocEnd(wordapp);
Clipboard.Clear;
rxdb.SelectAll;
rxdb.CopyToClipboard;
wordapp.selection.paste;
// worddoc.Sentences.Last.Paste;
// worddoc.Range.InsertAfter(''+#13);
end;
 
问题解决了,谢谢大家
 
硬木花椒,你好,能不能反你那程序发给我啊,谢谢了。pengmai@chinaecai.com
 
后退
顶部