Progress Meter in 8 steps
‘————————————————-
‘ Stage 1: Initialization
‘————————————————-
Dim TotalRec As Long ‘ Total number of records
Dim fOK As Boolean ‘ Continue/Cancel process
TotalRec = 0 ‘ Total number of records
Dim StatusMeter As clsStatusMeter
Set StatusMeter = New clsStatusMeter
‘ Init Progress Meter, Welcome message
Call StatusMeter.Init(Msg("Updating dictionary") & " …", True, 500)‘————————————————-
DoCmd.Hourglass True
‘————————————————-
‘ Stage 2: Get Total Records, Display number of records to process
‘————————————————-‘ Define total records
TotalRec = rst.RecordCount
Call StatusMeter.TotalRecords(TotalRec)
If rst.RecordCount > 0 Then
‘——————–
‘ Loop start‘——————–
Do While Not rstSourceSites.EOF
‘————————————————-
‘ Stage 3′: Update Header Meter and Check for Cancel
‘————————————————-
fOK = StatusMeter.UpdateHeaderCancel(0)
If Not fOK ThenDoCmd.Hourglass False
‘ Update status info
Call StatusMeter.AddInfo("Userabort", Msg("Operation cancelled by") & " " & GetUserName() & ".")Call LogMsgBox(Msg("Operation cancelled") & "!", _
vbOKOnly + vbInformation, Msg("Copying tariffs"), _
Form.Name, "cmdOk", Not CBool(curUser.DBReadSettings("StatusMeterDetails")))
GoTo WrapUp
End If
‘————————————————-
‘ Stage 4′: Display process info
‘————————————————-
Call StatusMeter.AddInfo("Present", DBLookUp("TransportationServiceName", "Transportation services", "TransportationServiceID=" & rstSourceSites![TransportationServiceID]))
NextRecord:
‘————————————————-
‘ Stage 5: Increment ProgressCounter, Next Record
‘————————————————-
Call StatusMeter.UpdateMeter(1)
rstSourceSites.MoveNext
Loop
‘——————–
‘ Loop end
‘——————–
End If
‘————————————————-
‘ Stage 6: Display Overall Statistics, Optional
‘————————————————-
Call StatusMeter.AddInfo("Smileregular", Msg("Successfully moved") & ": " & MovedRecords)
‘Call StatusMeter.AddInfo("Smileembaressed", Msg("Total recommendations") & ": " & WarningsCustomers)
Call StatusMeter.AddInfo("Smileangry", Msg("Total errors") & ": " & TotalErrorsRegNumber + TotalErrorsCustomers + TotalErrorsLoadName)
‘————————————————-
‘ Stage 7: End of operation
‘————————————————-
If fOK And StatusMeter.AutoHide Then
‘ End of operation
Call StatusMeter.CloseMeterElseIf fOK And Not StatusMeter.AutoHide Then
‘ End of operation with detailed view
Call StatusMeter.AddInfo("System", Msg("Time") & ":" & StatusMeter.StrTime(True) & ". ")
Call StatusMeter.AddInfo("Success", Msg("End of operation."))
Call StatusMeter.UpdateMeter(TotalRec)
ElseIf Not fOK And Not CBool(curUser.DBReadSettings("StatusMeterDetails")) Then
‘ Operation cancelled by user, no detailed view
Call StatusMeter.CloseMeter
ElseIf Not fOK And CBool(curUser.DBReadSettings("StatusMeterDetails")) Then
‘ End of operation, detail view
‘ Operation cancelled by user, detail view
Call StatusMeter.AddInfo("System", Msg("Time") & ":" & StatusMeter.StrTime(True) & ". ")
Call StatusMeter.AddInfo("Success", Msg("End of operation."))
Call StatusMeter.UpdateMeter(TotalRec)
End If
cmdOK_Click_Exit:
Set rst = Nothing ‘ Deassign ADO objects
Set conConnection = Nothing
‘————————————————-
‘ Stage 8: Deassign
‘————————————————-
Set StatusMeter = Nothing
DoCmd.Hourglass False
Exit Sub
cmdOK_Click_Err:
LogMsgError Err.Description, Err.Number, ModuleName$, "cmdOK_Click"
Resume cmdOK_Click_Exit
