Delphi 5 Word Servers and Merging Information

My company uses Word documents as forms.  Now they just print out the forms and then fill in the blanks.  What I want to do is use the new D5 Servers and by using some type of mail merge field on the word 97 document,  fill in and print the document in the background not showing the word document or Word at all.  I am getting my information from an Access 97 database and need to insert information of all tipes into the Word Document--Text, numbers, memo and boolean.  I am new at using D5's Servers so it would be nice for an example or a website for me to get information from.  I also have about 500 docs to change if I can get this working, so I would appreciate a simple change for the doc files.
rwasaffAsked:
Who is Participating?
 
intheConnect With a Mentor Commented:
hi,
there may be some info here that helps:

http://www.djpate.freeserve.co.uk/Automation.htm

0
 
wmckieCommented:
Hi

Here's another place that may help, especialy the word components.

http://www.capturebeat.com

I've only created one program similar to what you've described, I found it useful to create word fields for all of the input areas, that made it much easier to navigate the doc.

Cheers - Walter McKie
0
 
bozo7Commented:
Here is how I did it.



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  {$IFDEF VER130}
  Word97,
  {$ELSE}
  Word_TLB,
  {$ENDIF}
  StdCtrls, Db, DBTables, Dialogs, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    opdlOpen: TOpenDialog;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    Word: _Application;
    Doc: _Document;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses ComObj, ActiveX;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Pause, sFilename: OleVariant;
  i : Integer;
begin
  if opdlOpen.execute = True then
  begin
    sfilename := opdlOPen.filename;
    Doc := Word.Documents.open(sFileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

    Pause := False;
    with Doc.MailMerge do
    begin
      Destination := wdSendToNewDocument;
      Datasource.FirstRecord := wdDefaultFirstRecord;
      Datasource.LastRecord := integer(wdDefaultLastRecord);
      Execute(Pause);
    end;

    doc.PrintOut(EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam)
  end;
  showmessage('Done');
  for i := 0 to 10 do
    Beep;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  SaveChanges: OleVariant;
begin
  SaveChanges := wdDoNotSaveChanges;
  Word.Quit(SaveChanges, EmptyParam, EmptyParam);
  Doc := nil;
  Word := nil;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Unknown: IUnknown;
  Result: HResult;
begin
  {$IFDEF VER120}      // Delphi 4
  Result := GetActiveObject(CLASS_Application_, nil, Unknown);
  if (Result = MK_E_UNAVAILABLE) then
    Word := CoApplication_.Create

  {$ELSE}              // Delphi 5
  Result := GetActiveObject(CLASS_WordApplication, nil, Unknown);
  if (Result = MK_E_UNAVAILABLE) then
    Word := CoWordApplication.Create
  {$ENDIF}

  else begin
    { make sure no other error occurred during GetActiveObject }
    OleCheck(Result);
    OleCheck(Unknown.QueryInterface(_Application, Word));
  end;
  Word.Visible := False;

end;

end.

I got this info from
http://www.djpate.freeserve.co.uk/AutoWord.htm

Hope this helps
Ross
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
bozo7Commented:
opdlOpen is an OpenDialog box.

Ross
0
 
bozo7Commented:
The Beep stuff was just for fun.

Ross
0
 
rwasaffAuthor Commented:
Sorry it took me so long to get back.  You know how other things become more important at times.

I finally got to look at the examples and web sites you all suggested.  An I would like to give each of you 100 points if I could.  Could you tell me how to do this?  Do I just Accept each answer and would you get each 100 points.  This is what I want to do.

You all were a big help. Thanks

Bob  
0
 
intheCommented:
hi,
nice idea ;-)

to do so you have to ask new questions to each expert (just put experts name in title) then experts will put something (eg hello )as answer for question and then can get points..
yopu can accept one of the comments here as answer also or delete this question then ..

Regards Barry

0
 
rwasaffAuthor Commented:
Comment accepted as answer
0
 
rwasaffAuthor Commented:
And Thank you Again for the informstion
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.