thing im exploreing some these
http://allenbrowne.com/ser-29.html
Microsoft Access tips: VBA Traps: Working with Recordsets
Microsoft Access tips: VBA Traps: Working with Recordsets
Common mistakes developers make when working with Recordsets in a Microsoft Access database
5. MoveNext without testing EOF
A MoveNext may take you to the end of the recordset (EOF) or a MovePrevious to the beginning of the recordset (BOF). Failure to test for these conditions means your code works for most cases, but generates an error one day when the last/first record is accessed.
The problem is prevalent when you have another exit condition in mind for your loop, so you are not thinking of EOF. Test for EOF (or BOF if moving backwards) before checking the real exit condition for your loop.
Solution:
Use this construct for looping through Access recordsets:
Do while Not rst.EOF If rst![MyField] <> Something Then 'The real loop exit condition. Exit Do End If ' Rest of your code here. rst.MoveNext Loop
and
Another solution would be to use a timer control. You could set the time to 30000 msecs
and enable the timer. In the Timer_Timer() event you will disable the timer.
In your code you need a line to wait for the disabled timer.
Assume Timer1 added to your form
Code:
Private Sub Timer1_Timer() Timer1.Enabled = False End Sub
‘in your code loop
…
While Timer1.Enabled: DoEvents: Wend ‘wait for the timer to expire
or this possibily
For the sake of a complete set of solutions:
If you’re using vb6 in an application environment (like excel), you can use
Application.OnTime (now + TimeValue(“00:00:30”)), “ProcedurePart2”
to call a procedure (with no parameters) after 30 seconds without locking up the application or consuming CPU power.
This would, for instance, work in any VBA environment. Depending on the nature of your VB6 app (standalone vs add-on), this option may be available to you.
Public Sub delay(PauseTime as integer) Dim start As single start = Timer Do While Timer < start + PauseTime If (Timer < start) Then 'midnight crossover start = start - (86400 + 1) End If DoEvents ' Yield to other processes. Loop End Sub