(Hi Doug!) I have a relational database containing 2 tables. The first table
contains a list of primary contacts. The second table contains a list of
their associated team members.
Each primary contact is assigned a non-duplicate key, which is then used to
identify each and all of their team members in table 2.
I want to create a merge in Word that addresses the letter to the primary
contact (from table 1) and then lists all of their team mates (from table 2).
Best regards
Stuart
Hi Stuart,
I'm still around, but now living in Paris.
If you data is in Access, then I would be using an Access Report to do what
you are after with grouping by the primary contact.
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

Signature
Hope this helps.
Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.
Doug Robbins - Word MVP
> (Hi Doug!) I have a relational database containing 2 tables. The first
> table
[quoted text clipped - 11 lines]
> Best regards
> Stuart
Stuart Troy - 02 May 2005 14:49 GMT
Thanks very much for all the pointers!
Your response has led me to discover the "database" Field. Which I read
about here; www.knowhow.com/Guides/CompoundMerges/CompoundMerge.htm
I'm now learning how to utilise the "database" field to connect to a remote
SQL database, but the example only demonstrates how to connect to a local
Access database. But I'm on my way!
Merci Doug! ;)
Stuart
Sydney, Australia