Word Mail Merge with Related Tables (Relationship Database)

S

StingRay327

I can't find anywhere in Word XP to create a mail merge with related tables?
It will only let me insert a field from one and only one table. I need to
insert data from one table, like name, address, city, ect. and then the
related data in another table like their accounts. So basically I have two
tables with a one-to-many relationship and I would like to import the data
into word from both the related tables. It all works perfect in access in
the Reports, I get my name and address of my person as well as listing all
their accounts with me. Now if only Word would mail merge like a Report in
Access? Is there such a thing? Thanks!
 
P

Peter Jamieson

Word isn't designed to do this. If possible stick with Access. If you really
want to try using Word, have a look at Cindy Meister's material at

http://homepage.swissonline.ch/cindymeister/

look for Mail Merge FAQ, Special Merges, Multiple Items per Condition.
Alternatively, you could use VBA and the Mailmerge events in the Mailmerge
object to retrieve the "child data" - e.g. using ADO - once for each record
in the mail merge data source, insert it and format it how you like.
 
D

Doug Robbins

As Peter said, Word does not do this very well and I would use Access with
which you can create this sort of thing quite easily using Report/Sub
Reports. While the following contains the same link to which Peter directed
you, the balance of it might be of interest if you are hell-bent on doing it
in Word.

Word does not really have the ability to perform a "multiple items per
condition (=key field)" mailmerge.

See the "Multiple items per condition" item under the "Special merges"
section of fellow MVP CIndy Meister's website at

http://homepage.swissonline.ch/cindymeister/MergFram.htm

Or, if you create a Catalog (on in Word XP and later, it's called Directory)
type mailmerge main document with the mergefields in the cells of a one row
table in the mailmerge main document with the keyfield in the first cell in
the row and then execute that merge to a new document and then run the
following macro, it will create separate tables with the records for each
key field in them. With a bit of further development, you may be able to
get it to do what you want.

' Macro to create multiple items per condition in separate tables from a
directory type mailmerge

Dim source As Document, target As Document, scat As Range, tcat As Range
Dim data As Range, stab As Table, ttab As Table
Dim i As Long, j As Long, k As Long, n As Long
Set source = ActiveDocument
Set target = Documents.Add
Set stab = source.Tables(1)
k = stab.Columns.Count
Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1,
numcolumns:=k - 1)
Set scat = stab.Cell(1, 1).Range
scat.End = scat.End - 1
ttab.Cell(1, 1).Range = scat
j = ttab.Rows.Count
For i = 1 To stab.Rows.Count
Set tcat = ttab.Cell(j, 1).Range
tcat.End = tcat.End - 1
Set scat = stab.Cell(i, 1).Range
scat.End = scat.End - 1
If scat <> tcat Then
ttab.Rows.Add
j = ttab.Rows.Count
ttab.Cell(j, 1).Range = scat
ttab.Cell(j, 1).Range.Paragraphs(1).PageBreakBefore = True
ttab.Rows.Add
ttab.Cell(j + 1, 1).Range.Paragraphs(1).PageBreakBefore = False
For n = 2 To k
Set data = stab.Cell(i, n).Range
data.End = data.End - 1
ttab.Cell(ttab.Rows.Count, n - 1).Range = data
Next n
Else
ttab.Rows.Add
For n = 2 To k
Set data = stab.Cell(i, n).Range
data.End = data.End - 1
ttab.Cell(ttab.Rows.Count, n - 1).Range = data
Next n
End If
Next i


--
Please respond to the Newsgroup for the benefit of others who may be
interested. Questions sent directly to me will only be answered on a paid
consulting basis.

Hope this helps,
Doug Robbins - Word MVP
 

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