?
Solved

Delphi 5 Word Servers and Merging Information

Posted on 2000-05-14
9
Medium Priority
?
238 Views
Last Modified: 2010-04-04
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.
0
Comment
Question by:rwasaff
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 17

Accepted Solution

by:
inthe earned 400 total points
ID: 2809032
hi,
there may be some info here that helps:

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

0
 
LVL 1

Expert Comment

by:wmckie
ID: 2809805
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
 
LVL 1

Expert Comment

by:bozo7
ID: 2811062
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 1

Expert Comment

by:bozo7
ID: 2811067
opdlOpen is an OpenDialog box.

Ross
0
 
LVL 1

Expert Comment

by:bozo7
ID: 2811074
The Beep stuff was just for fun.

Ross
0
 

Author Comment

by:rwasaff
ID: 2844435
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
 
LVL 17

Expert Comment

by:inthe
ID: 2846846
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
 

Author Comment

by:rwasaff
ID: 2848098
Comment accepted as answer
0
 

Author Comment

by:rwasaff
ID: 2848099
And Thank you Again for the informstion
0

Featured Post

Want to be a Web Developer? Get Certified Today!

Enroll in the Certified Web Development Professional course package to learn HTML, Javascript, and PHP. Build a solid foundation to work toward your dream job!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Suggested Courses
Course of the Month13 days, 23 hours left to enroll

800 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question