Group:  Microsoft Access ยป microsoft.public.access.formscoding
Thread: Losing last Record of record set

Geek News

Losing last Record of record set
"RedHeadedMonster via AccessMonster.com" <u36819[ at ]uwe> 11/13/2008 2:17:36 PM
I've created a form that transfers a report into a Word Document Table.
Program working well, except that for whatever reason, the last line of data
in the record set is not showing up in the table. Below is the code, what am
I missing? Why am I losing the last line of data?

Thanx!
RHM

Private Sub cmdCreateCDRLReport_Click()

Dim aWordApp As Word.Application
Dim aRange As Word.Range, aTable As Word.Table
Dim aCell As Word.Cell
Dim iCol As Integer, iRow As Integer


'define recordset
Dim rst1 As DAO.Recordset
Set rst1 = Me.ss_Weekly_MAIN.Form.Recordset

'create word document
Set aWordApp = CreateObject("Word.Application")
aWordApp.Documents.Add

'insert title & date range

With aWordApp.ActiveDocument.Paragraphs(1).Range
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Bold = True
.Font.Name = "Time New Roman"
.Font.Size = 10
.Text = "CDRL Status" & vbCr & Me.TimePeriod & vbCr
End With

'create table
Set aRange = aWordApp.ActiveDocument.Range
aRange.Collapse wdCollapseEnd

aWordApp.ActiveDocument.Tables.Add Range:=aRange, NumRows:=rst1.RecordCount +
2, NumColumns:=8

'Make word visible
aWordApp.Visible = True

'format table and data


With aWordApp.ActiveDocument.Tables(1)
.AutoFormat wdTableFormatClassic2
.AutoFitBehavior wdAutoFitContent
'Paragraph alignment
.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Font.Name = "Time New Roman"
.Range.Font.Size = 10

With .Borders(wdBorderTop)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth075pt
.Color = wdColorBlack
End With
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
.Color = wdColorAutomatic
End With
With .Borders(wdBorderHorizontal)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth075pt
.Color = wdColorBlack
End With
With .Borders(wdBorderVertical)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth075pt
.Color = wdColorBlack
End With
.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
.Borders.Shadow = False



End With

'insert and format column titles
With aWordApp.ActiveDocument.Tables(1).Rows(1)

With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorLightGreen
End With

.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
.Borders(wdBorderTop).LineWidth = wdLineWidth150pt
.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
.Borders(wdBorderBottom).LineWidth = wdLineWidth150pt


.Borders(wdBorderBottom).Visible = True
.Cells(1).Range.Text = "Project"
.Cells(1).Range.Font.Color = wdColorBlack
.Cells(2).Range.Text = "# CDRLs Submitted On-Time"
.Cells(2).Range.Font.Color = wdColorBlack
.Cells(3).Range.Text = "# CDRLs Submitted Late"
.Cells(3).Range.Font.Color = wdColorBlack
.Cells(4).Range.Text = "# CDRLs Approved"
.Cells(4).Range.Font.Color = wdColorBlack
.Cells(5).Range.Text = "# CDRLs Approved w/ Changes"
.Cells(5).Range.Font.Color = wdColorBlack
.Cells(6).Range.Text = "# CDRLs Closed"
.Cells(6).Range.Font.Color = wdColorBlack
.Cells(7).Range.Text = "# CDRLs Disapproved"
.Cells(7).Range.Font.Color = wdColorBlack
.Cells(8).Range.Text = "# CDRLs Awaiting Approval"
.Cells(8).Range.Font.Color = wdColorBlack



End With

'insert data
For iRow = 2 To rst1.RecordCount
iCol = 0
For Each aCell In aWordApp.ActiveDocument.Tables(1).Rows(iRow).Cells
aCell.Range.Text = IIf(rst1.Fields(iCol) > 0, rst1.Fields(iCol), "")
iCol = iCol + 1
Next aCell
rst1.MoveNext
Next iRow

'set up last row of table as a totals column
With aWordApp.ActiveDocument.Tables(1).Rows(rst1.RecordCount + 2)
.Cells(1).Range.Text = "TOTALS"
.Cells(1).Range.Font.Bold = True
.Cells(2).Range.Text = Me.ss_Weekly_MAIN.Form.Early
.Cells(2).Range.Font.Bold = True
.Cells(3).Range.Text = Me.ss_Weekly_MAIN.Form.Late
.Cells(3).Range.Font.Bold = True
.Cells(4).Range.Text = Me.ss_Weekly_MAIN.Form.Approved
.Cells(4).Range.Font.Bold = True
.Cells(5).Range.Text = Me.ss_Weekly_MAIN.Form.ApprovedC
.Cells(5).Range.Font.Bold = True
.Cells(6).Range.Text = Me.ss_Weekly_MAIN.Form.Closed
.Cells(6).Range.Font.Bold = True
.Cells(7).Range.Text = Me.ss_Weekly_MAIN.Form.Disapproved
.Cells(7).Range.Font.Bold = True
.Cells(8).Range.Text = Me.ss_Weekly_MAIN.Form.Await
.Cells(8).Range.Font.Bold = True

With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorLightGreen
End With

.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
.Borders(wdBorderTop).LineWidth = wdLineWidth150pt
.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
.Borders(wdBorderBottom).LineWidth = wdLineWidth150pt

End With

With aWordApp.ActiveDocument.Tables(1)
.AutoFitBehavior wdAutoFitFixed
End With

End Sub

--
Message posted via AccessMonster.com
http://www.accessmonster.com/Uwe/Forums.aspx/access-formscoding/200811/1

Re: Losing last Record of record set
"Douglas J. Steele" <NOSPAM_djsteele[ at ]NOSPAM_gmail.com> 11/13/2008 2:26:16 PM
Your loop is

For iRow = 2 To rst1.RecordCount

Looks to me as though that's one less than it should be!

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"RedHeadedMonster via AccessMonster.com" <u36819[ at ]uwe> wrote in message
news:8d214c5985d85[ at ]uwe...
[Quoted Text]
> I've created a form that transfers a report into a Word Document Table.
> Program working well, except that for whatever reason, the last line of
> data
> in the record set is not showing up in the table. Below is the code, what
> am
> I missing? Why am I losing the last line of data?
>
> Thanx!
> RHM
>
> Private Sub cmdCreateCDRLReport_Click()
>
> Dim aWordApp As Word.Application
> Dim aRange As Word.Range, aTable As Word.Table
> Dim aCell As Word.Cell
> Dim iCol As Integer, iRow As Integer
>
>
> 'define recordset
> Dim rst1 As DAO.Recordset
> Set rst1 = Me.ss_Weekly_MAIN.Form.Recordset
>
> 'create word document
> Set aWordApp = CreateObject("Word.Application")
> aWordApp.Documents.Add
>
> 'insert title & date range
>
> With aWordApp.ActiveDocument.Paragraphs(1).Range
> .ParagraphFormat.Alignment = wdAlignParagraphCenter
> .Font.Bold = True
> .Font.Name = "Time New Roman"
> .Font.Size = 10
> .Text = "CDRL Status" & vbCr & Me.TimePeriod & vbCr
> End With
>
> 'create table
> Set aRange = aWordApp.ActiveDocument.Range
> aRange.Collapse wdCollapseEnd
>
> aWordApp.ActiveDocument.Tables.Add Range:=aRange,
> NumRows:=rst1.RecordCount +
> 2, NumColumns:=8
>
> 'Make word visible
> aWordApp.Visible = True
>
> 'format table and data
>
>
> With aWordApp.ActiveDocument.Tables(1)
> .AutoFormat wdTableFormatClassic2
> .AutoFitBehavior wdAutoFitContent
> 'Paragraph alignment
> .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
> .Range.Font.Name = "Time New Roman"
> .Range.Font.Size = 10
>
> With .Borders(wdBorderTop)
> .LineStyle = wdLineStyleSingle
> .LineWidth = wdLineWidth075pt
> .Color = wdColorBlack
> End With
> With .Borders(wdBorderBottom)
> .LineStyle = wdLineStyleSingle
> .LineWidth = wdLineWidth050pt
> .Color = wdColorAutomatic
> End With
> With .Borders(wdBorderHorizontal)
> .LineStyle = wdLineStyleSingle
> .LineWidth = wdLineWidth075pt
> .Color = wdColorBlack
> End With
> With .Borders(wdBorderVertical)
> .LineStyle = wdLineStyleSingle
> .LineWidth = wdLineWidth075pt
> .Color = wdColorBlack
> End With
> .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
> .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
> .Borders.Shadow = False
>
>
>
> End With
>
> 'insert and format column titles
> With aWordApp.ActiveDocument.Tables(1).Rows(1)
>
> With .Shading
> .Texture = wdTextureNone
> .ForegroundPatternColor = wdColorAutomatic
> .BackgroundPatternColor = wdColorLightGreen
> End With
>
> .Borders(wdBorderTop).LineStyle = wdLineStyleSingle
> .Borders(wdBorderTop).LineWidth = wdLineWidth150pt
> .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
> .Borders(wdBorderBottom).LineWidth = wdLineWidth150pt
>
>
> .Borders(wdBorderBottom).Visible = True
> .Cells(1).Range.Text = "Project"
> .Cells(1).Range.Font.Color = wdColorBlack
> .Cells(2).Range.Text = "# CDRLs Submitted On-Time"
> .Cells(2).Range.Font.Color = wdColorBlack
> .Cells(3).Range.Text = "# CDRLs Submitted Late"
> .Cells(3).Range.Font.Color = wdColorBlack
> .Cells(4).Range.Text = "# CDRLs Approved"
> .Cells(4).Range.Font.Color = wdColorBlack
> .Cells(5).Range.Text = "# CDRLs Approved w/ Changes"
> .Cells(5).Range.Font.Color = wdColorBlack
> .Cells(6).Range.Text = "# CDRLs Closed"
> .Cells(6).Range.Font.Color = wdColorBlack
> .Cells(7).Range.Text = "# CDRLs Disapproved"
> .Cells(7).Range.Font.Color = wdColorBlack
> .Cells(8).Range.Text = "# CDRLs Awaiting Approval"
> .Cells(8).Range.Font.Color = wdColorBlack
>
>
>
> End With
>
> 'insert data
> For iRow = 2 To rst1.RecordCount
> iCol = 0
> For Each aCell In aWordApp.ActiveDocument.Tables(1).Rows(iRow).Cells
> aCell.Range.Text = IIf(rst1.Fields(iCol) > 0, rst1.Fields(iCol),
> "")
> iCol = iCol + 1
> Next aCell
> rst1.MoveNext
> Next iRow
>
> 'set up last row of table as a totals column
> With aWordApp.ActiveDocument.Tables(1).Rows(rst1.RecordCount + 2)
> .Cells(1).Range.Text = "TOTALS"
> .Cells(1).Range.Font.Bold = True
> .Cells(2).Range.Text = Me.ss_Weekly_MAIN.Form.Early
> .Cells(2).Range.Font.Bold = True
> .Cells(3).Range.Text = Me.ss_Weekly_MAIN.Form.Late
> .Cells(3).Range.Font.Bold = True
> .Cells(4).Range.Text = Me.ss_Weekly_MAIN.Form.Approved
> .Cells(4).Range.Font.Bold = True
> .Cells(5).Range.Text = Me.ss_Weekly_MAIN.Form.ApprovedC
> .Cells(5).Range.Font.Bold = True
> .Cells(6).Range.Text = Me.ss_Weekly_MAIN.Form.Closed
> .Cells(6).Range.Font.Bold = True
> .Cells(7).Range.Text = Me.ss_Weekly_MAIN.Form.Disapproved
> .Cells(7).Range.Font.Bold = True
> .Cells(8).Range.Text = Me.ss_Weekly_MAIN.Form.Await
> .Cells(8).Range.Font.Bold = True
>
> With .Shading
> .Texture = wdTextureNone
> .ForegroundPatternColor = wdColorAutomatic
> .BackgroundPatternColor = wdColorLightGreen
> End With
>
> .Borders(wdBorderTop).LineStyle = wdLineStyleSingle
> .Borders(wdBorderTop).LineWidth = wdLineWidth150pt
> .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
> .Borders(wdBorderBottom).LineWidth = wdLineWidth150pt
>
> End With
>
> With aWordApp.ActiveDocument.Tables(1)
> .AutoFitBehavior wdAutoFitFixed
> End With
>
> End Sub
>
> --
> Message posted via AccessMonster.com
> http://www.accessmonster.com/Uwe/Forums.aspx/access-formscoding/200811/1
>


Re: Losing last Record of record set
"RedHeadedMonster via AccessMonster.com" <u36819[ at ]uwe> 11/13/2008 4:21:36 PM
Thanx!
RHM

Douglas J. Steele wrote:
[Quoted Text]
>Your loop is
>
>For iRow = 2 To rst1.RecordCount
>
>Looks to me as though that's one less than it should be!
>
>> I've created a form that transfers a report into a Word Document Table.
>> Program working well, except that for whatever reason, the last line of
>[quoted text clipped - 160 lines]
>>
>> End Sub

--
Message posted via AccessMonster.com
http://www.accessmonster.com/Uwe/Forums.aspx/access-formscoding/200811/1

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net