View Single Post
  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Creating a directory or catalog in(Word 2002

As your data is in Access, my firm opinion is that Access should be used to
do this. Possibly a select query that weeds out the unwanted data, should
be used as the basis for the report.

Word is not designed to do what you want, but see the "Group Multiple items
for a single condition" item on fellow MVP Cindy Meister's website at:

http://homepage.swissonline.ch/cindy...faq1.htm#DBPic

Or take a look at the following Knowledge Base Article:

http://support.microsoft.com/default...b;en-us;211303

or at:

http://www.knowhow.com/Guides/Compou...poundMerge.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

--
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

"SMA1974" wrote in message
...
Good morning,

I am trying to create a catalog (report) in word that will group records
for
each site number. The data is being pulled from an Access 2000 database.

I have already created a report in Access to do this, but the problem is
that we may need to edit some of the data on the reports after they are
run.
The problem is that there are over 18000 records and removing them ahead
of
time is not possible.

Therefore I believe that Word is my only option.

For instance eacb page would have data listing similar to below:

Site 1001

subject dcf discrp
1001001 265798 111312
1001002 1265847 2134211

Then the next page would show data for the next site number and so on.
It is possible that some of the data listings could span multiple pages.

I have try to create this via the mail merge directory function as well
via
the add database function, but I continue to have problems or the database
can not be opened.

I am not a developer, but with instuctions I am willing to try any
suggestions.

Thank you,

Fred