View Single Post
  #2   Report Post  
Peter Jamieson
 
Posts: n/a
Default

The records in the data source don't have all the "file-like" methods and
properties you might expect, and the ones that do exist may not work exactly
the way you might hope, either. I have suggested code along the following
lines in the past - it could probably be better structured, but some of the
code is there on the assumption that DbMergeSummaries is actually doing a
merge on the current document (in which case Word may change the value of
ActiveRecord).

Dim iSourceRecord As Long
Dim bEndOfData As Boolean
With ActiveDocument.MailMerge
.OpenDataSource Name:=strPath & strDatabase, _
Connection:="Query qryEVM"
.DataSource.QueryString = strSQL
iSourceRecord = 1
bEndOfData = False
Do Until bEndOfData
.DataSource.ActiveRecord = iSourceRecord

' if we have gone past the end (and possibly, if there are no records)
' then the Activerecord will not be what we have just tried to set it to

If .DataSource.ActiveRecord iSourceRecord Then
bEndOfData = True
Else
strProjectNo = .DataSource.DataFields("Project_No").Value
.DataSource.FirstRecord = iSourceRecord
.DataSource.LastRecord = iSourceRecord
Call DbMergeSummaries(strProjectNo)
iSourceRecord = iSourceRecord + 1
End If
Loop

Peter Jamieson

"carl" wrote in message
...
I have a macro that needs a value from field in a MSAccess97 database.
The marco needs to run until EOF. I am using MSWord97.
This is what I have:

With ActiveDocument.MailMerge
.OpenDataSource Name:=strPath & strDatabase, _
Connection:="Query qryEVM"
.DataSource.QueryString = strSQL
Do Until EOF 'run macro until end of records
strProjectNo = .DataSource.DataFields("Project_No").Value
Call DbMergeSummaries(strProjectNo)
'how to move next record???
Loop
End With