How to use access query computed fields in Word mailmerge

R

Rey

I just upgraded from Word 97 to Word 2003. When I try to use an Access
database in a mailmerge, the queries in Access that use computed fields using
functions that I created do not show up in the Word queries available for
mailmerge. My access databases have lots of these computed query fields.
There is probably an option somewhere that I need to set to be able to do
this but I can not find a way to do that. To reproduce this "problem" create
an access database (say TryIt.mdb)with any data in it. Then define a query
called "TestQ" One of the fields there would be Example:Mydate(). In the
common code you define a function as "
Function Mydate() as Date
Mydate = Date
end function
Now create a Word document and try to link to TryIt.mdb and the TestQ query.

Any assistance on this would be very much appreciated.
 
P

Peter Jamieson

You have to check Word Tools|Options|General|Confirm conversion at open then
connect tot he Access database again and select the DDE option when it is
offered. Word 2002/3 changed the default method Word connects to Access from
DDE to OLEDB. OLEDB just uses the underlying Jet database engine to get the
data, and it doesn't actually know how to execute user-defined functions
created in Access. DDE starts Access, which does not how.

Peter Jamieson
 
R

Rey

Peter:
Thank you. Your reply adds some light to the problem I am
encountering. I have a followup question: Is there a way that I can specify
either in the Macro Call to do the open source
(ActiveDocument.MailMerge.OpenDataSource) or in some other parameter to use
the DDE without prompting me? The people in the church that I am writing the
code for know nothing about programming and I really do not want them to be
prompted for something they do not really understand and hence are likely to
answer the wrong thing.
Thanks,
Rey
 
P

Peter Jamieson

Once you have gone through the connection process once, Word should remember
the connection and your users should not have to make it (unless you are
distributing the application for use on systems where the files will be in
different folders etc., and it doesn't sound as if you are). The users may
encounter one or more security-related messages (at least one from Word
about SQL, and one from Access) but they should not have to pick a table or
query name.

To make a DDE connection in code from Word 2000/2002 I think you will need
to do at least the following:

ActiveDocument.MailMerge.OpenDataSource _
Name:="the full pathname of your access .mdb", _
Connection:="QUERY the query name", _ ' or "TABLE the table name"
SQLStatement:="SELECT * FROM [the table or query name]"

Peter Jamieson
 
R

Rey

Peter:
Thanks for your helpful advice. While I was waiting for your reply I
found an even better solution (Because I do port from home to church and back
since I do the development at home). It is to use
SubType:=wdMergeSubTypeWord2000 at the end of the OpenDataSource call. I
found this answer at Cindy Meister's excellent website:
http://homepage.swissonline.ch/cindymeister/MM2002/MM2002.htm

Of course, if Microsoft had documented the SubType argument to
OpenDataSource it would have saved me uncountable work and grief. But I guess
that is expecting too much. :-(
Thanks again for all your help.
Rey

Peter Jamieson said:
Once you have gone through the connection process once, Word should remember
the connection and your users should not have to make it (unless you are
distributing the application for use on systems where the files will be in
different folders etc., and it doesn't sound as if you are). The users may
encounter one or more security-related messages (at least one from Word
about SQL, and one from Access) but they should not have to pick a table or
query name.

To make a DDE connection in code from Word 2000/2002 I think you will need
to do at least the following:

ActiveDocument.MailMerge.OpenDataSource _
Name:="the full pathname of your access .mdb", _
Connection:="QUERY the query name", _ ' or "TABLE the table name"
SQLStatement:="SELECT * FROM [the table or query name]"

Peter Jamieson
 
P

Peter Jamieson

Whoops! I'm glad you found that as it was the one thing that I left out that
really needed to be there. Time for a break, I think :)

I have no idea why MS didn't document the SubType argument - for future
reference it's always worth
a. having a look at their knowledgebase at http://support.microsoft.com
b. searching Google Groups

Peter Jamieson
Rey said:
Peter:
Thanks for your helpful advice. While I was waiting for your reply I
found an even better solution (Because I do port from home to church and
back
since I do the development at home). It is to use
SubType:=wdMergeSubTypeWord2000 at the end of the OpenDataSource call. I
found this answer at Cindy Meister's excellent website:
http://homepage.swissonline.ch/cindymeister/MM2002/MM2002.htm

Of course, if Microsoft had documented the SubType argument to
OpenDataSource it would have saved me uncountable work and grief. But I
guess
that is expecting too much. :-(
Thanks again for all your help.
Rey

Peter Jamieson said:
Once you have gone through the connection process once, Word should
remember
the connection and your users should not have to make it (unless you are
distributing the application for use on systems where the files will be
in
different folders etc., and it doesn't sound as if you are). The users
may
encounter one or more security-related messages (at least one from Word
about SQL, and one from Access) but they should not have to pick a table
or
query name.

To make a DDE connection in code from Word 2000/2002 I think you will
need
to do at least the following:

ActiveDocument.MailMerge.OpenDataSource _
Name:="the full pathname of your access .mdb", _
Connection:="QUERY the query name", _ ' or "TABLE the table name"
SQLStatement:="SELECT * FROM [the table or query name]"

Peter Jamieson
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top