hceonetman
Technical User
I have a procedure which I have checked and rechecked for syntax, but when I try to run it I get a compiler error "Loop without Do". The proc populates a table for generating a report. Sorry for the length, but I didn't want to leave anything out. The code follows:
Sub Updt_Aud_Rept()
Dim Cn As New ADODB.Connection
Dim RecHeader As New ADODB.RecordSet
Dim RecDetail As New ADODB.RecordSet
Dim ReptTable As New ADODB.RecordSet
Dim RecSums As New ADODB.RecordSet
Dim Rec_Id As Long
Dim Cash_Amt As Long
Dim Check_Amt As Long
Dim Wire_Amt As Long
Dim Item_Num As Integer
Dim DetailRecs As Integer
Dim Page_Num As Integer
Dim Tot_Pages As Integer
Dim RecCounter As Integer
Set Cn = CurrentProject.Connection
Cn.CursorLocation = adUseClient
RecHeader.Open "Tbl_Receipts_Header", Cn, adOpenDynamic
RecDetail.Open "Tbl_Receipts_Detail", Cn, adOpenDynamic
ReptTable.Open "Tbl_Aud_Revenue_Rcpt", Cn, adOpenKeyset
RecSums.Open "Qry_Receipts_Sums", Cn, adOpenDynamic
RecHeader.MoveFirst
DetailRecs = 0
Cash_Amt = 0
Check_Amt = 0
Wire_Amt = 0
RecSums.MoveFirst
Do While Not RecSums.EOF
DetailRecs = DetailRecs + RecSums![RecCount]
Select Case RecSums![Pmt_Type]
Case "Cash"
Cash_Amt = Cash_Amt + RecSums![Dollars]
Case "Check"
Check_Amt = Check_Amt + RecSums![Dollars]
Case "Wire"
Wire_Amt = Wire_Amt + RecSums![Dollars]
End Select
RecSums.MoveNext
Loop
Tot_Pages = Int(DetailRecs / 2) + (DetailRecs Mod 2)
' Process two items per page, one page at a time.
RecHeader.Find ("Receipt_ID=" & Rec_Id)
RecDetail.Find ("Receipt_ID=" & Rec_Id)
RecCounter = 0
Do While RecCounter < DetailRecs
RecCounter = RecCounter + 1
Page_Num = Page_Num + 1
If RecCounter = 1 Then
ReptTable.AddNew
ReptTable![Receipt_ID] = RecHeader![Receipt_ID]
ReptTable![RR_Num] = RecHeader![RR_Num]
ReptTable![Pg_num] = Page_Num
ReptTable![Begin_Date] = RecHeader![Begin_Date]
ReptTable![End_Date] = RecHeader![End_Date]
ReptTable![Post_Date] = RecHeader![Posting_Date]
ReptTable![Amount] = RecHeader![Amount]
ReptTable![Written_Amt] = RecHeader![Written_Amount]
ReptTable![Initials] = RecHeader![Initials]
ReptTable![Detail_Lines] = RecHeader![Num_Detail]
End 'If RecCounter = 1
ReptTable![Detail_Num] = Chr(64 + RecCounter) ' A,B,C etc
ReptTable![OCA_1] = RecDetail![OCA_Codes]
ReptTable![OL3_1] = RecDetail![Obj_Level_3]
ReptTable![Amt_1] = RecDetail![Amount]
ReptTable![Descr_1] = RecDetail![Description]
ReptTable![Vend_1] = RecDetail![Vendors]
If RecCounter < DetailRecs Then
RecCounter = RecCounter + 1
RecDetail.MoveNext
'Line item 2 for the current page
If Not RecDetail.EOF Then
ReptTable![Detail_Num] = Chr(64 + RecCounter) ' A,B,C etc
ReptTable![OCA_2] = RecDetail![OCA_Codes]
ReptTable![OL3_2] = RecDetail![Obj_Level_3]
ReptTable![Amt_2] = RecDetail![Amount]
ReptTable![Descr_2] = RecDetail![Description]
ReptTable![Vend_2] = RecDetail![Vendors]
End 'If Not RecDetail.EOF
Else
ReptTable![Detail_Num] = ""
ReptTable![OCA_2] = ""
ReptTable![OL3_2] = ""
ReptTable![Amt_2] = ""
ReptTable![Descr_2] = ""
ReptTable![Vend_2] = ""
End 'RecCounter < DetailRecs
RecDetail.MoveNext
Loop
RecHeader.Close
RecDetail.Close
ReptTable.Close
RecSums.Close
Set RecHeader = Nothing
Set RecDetail = Nothing
Set ReptTable = Nothing
Set RecSums = Nothing
Cn.Close
Set Cn = Nothing
End Sub
The first do/while works, but the compiler highlights the "Loop" at the end, just before the cleanup lines. I've deleted and re-entered the code and have changed it to a 'Do /Until' with no luck. Any Ideas?
Thanks,
HCEONETMAN
"Variables won't, Constants aren't"
Sub Updt_Aud_Rept()
Dim Cn As New ADODB.Connection
Dim RecHeader As New ADODB.RecordSet
Dim RecDetail As New ADODB.RecordSet
Dim ReptTable As New ADODB.RecordSet
Dim RecSums As New ADODB.RecordSet
Dim Rec_Id As Long
Dim Cash_Amt As Long
Dim Check_Amt As Long
Dim Wire_Amt As Long
Dim Item_Num As Integer
Dim DetailRecs As Integer
Dim Page_Num As Integer
Dim Tot_Pages As Integer
Dim RecCounter As Integer
Set Cn = CurrentProject.Connection
Cn.CursorLocation = adUseClient
RecHeader.Open "Tbl_Receipts_Header", Cn, adOpenDynamic
RecDetail.Open "Tbl_Receipts_Detail", Cn, adOpenDynamic
ReptTable.Open "Tbl_Aud_Revenue_Rcpt", Cn, adOpenKeyset
RecSums.Open "Qry_Receipts_Sums", Cn, adOpenDynamic
RecHeader.MoveFirst
DetailRecs = 0
Cash_Amt = 0
Check_Amt = 0
Wire_Amt = 0
RecSums.MoveFirst
Do While Not RecSums.EOF
DetailRecs = DetailRecs + RecSums![RecCount]
Select Case RecSums![Pmt_Type]
Case "Cash"
Cash_Amt = Cash_Amt + RecSums![Dollars]
Case "Check"
Check_Amt = Check_Amt + RecSums![Dollars]
Case "Wire"
Wire_Amt = Wire_Amt + RecSums![Dollars]
End Select
RecSums.MoveNext
Loop
Tot_Pages = Int(DetailRecs / 2) + (DetailRecs Mod 2)
' Process two items per page, one page at a time.
RecHeader.Find ("Receipt_ID=" & Rec_Id)
RecDetail.Find ("Receipt_ID=" & Rec_Id)
RecCounter = 0
Do While RecCounter < DetailRecs
RecCounter = RecCounter + 1
Page_Num = Page_Num + 1
If RecCounter = 1 Then
ReptTable.AddNew
ReptTable![Receipt_ID] = RecHeader![Receipt_ID]
ReptTable![RR_Num] = RecHeader![RR_Num]
ReptTable![Pg_num] = Page_Num
ReptTable![Begin_Date] = RecHeader![Begin_Date]
ReptTable![End_Date] = RecHeader![End_Date]
ReptTable![Post_Date] = RecHeader![Posting_Date]
ReptTable![Amount] = RecHeader![Amount]
ReptTable![Written_Amt] = RecHeader![Written_Amount]
ReptTable![Initials] = RecHeader![Initials]
ReptTable![Detail_Lines] = RecHeader![Num_Detail]
End 'If RecCounter = 1
ReptTable![Detail_Num] = Chr(64 + RecCounter) ' A,B,C etc
ReptTable![OCA_1] = RecDetail![OCA_Codes]
ReptTable![OL3_1] = RecDetail![Obj_Level_3]
ReptTable![Amt_1] = RecDetail![Amount]
ReptTable![Descr_1] = RecDetail![Description]
ReptTable![Vend_1] = RecDetail![Vendors]
If RecCounter < DetailRecs Then
RecCounter = RecCounter + 1
RecDetail.MoveNext
'Line item 2 for the current page
If Not RecDetail.EOF Then
ReptTable![Detail_Num] = Chr(64 + RecCounter) ' A,B,C etc
ReptTable![OCA_2] = RecDetail![OCA_Codes]
ReptTable![OL3_2] = RecDetail![Obj_Level_3]
ReptTable![Amt_2] = RecDetail![Amount]
ReptTable![Descr_2] = RecDetail![Description]
ReptTable![Vend_2] = RecDetail![Vendors]
End 'If Not RecDetail.EOF
Else
ReptTable![Detail_Num] = ""
ReptTable![OCA_2] = ""
ReptTable![OL3_2] = ""
ReptTable![Amt_2] = ""
ReptTable![Descr_2] = ""
ReptTable![Vend_2] = ""
End 'RecCounter < DetailRecs
RecDetail.MoveNext
Loop
RecHeader.Close
RecDetail.Close
ReptTable.Close
RecSums.Close
Set RecHeader = Nothing
Set RecDetail = Nothing
Set ReptTable = Nothing
Set RecSums = Nothing
Cn.Close
Set Cn = Nothing
End Sub
The first do/while works, but the compiler highlights the "Loop" at the end, just before the cleanup lines. I've deleted and re-entered the code and have changed it to a 'Do /Until' with no luck. Any Ideas?
Thanks,
HCEONETMAN
"Variables won't, Constants aren't"