Ho inserito un Timer in un Form per comunicare agli utilizzatori quanto tempo occorre per importare dati da un DB che raggiungo tramite un driver ODBC. Devo importare numerose Tabelle delle quali non conosco la dimensione (Righe) e siccome il processo occupa un tempo ragguardevole mi è stato chiesto appunto di inserire un Timer. Nel processo ho inserito anche una Progressbar e per impostarne il valore ho rilevato tramite una Query il numero di righe di ogni Tabella che devo importare. Durante l'esecuzione di queste Query, specialmente se le righe sono molte, il Timer si ferma e perde anche molti secondi rispetto al tempo di sistema.
Esiste un modo per obbligare il Timer a non "perdere il tempo"?
Di seguito il codice di una Query e dell'impostazione del Timer.
codice:
Dim rs As New ADODB.Recordset()
Dim sSQL As String
Dim M As Integer
ProgressBar.Value = 1000
Application.DoEvents()
sSQL = "SELECT Count(sconto) From ScontoClienti WHERE categoria=1"
rs.Open(sSQL, CnODBC, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
M = rs(0).Value
' M è il valore che utilizzo per gestire la ProgressBar durante la importazione delle Tabelle che avviene ricorsivamente tramite:
DoUntil rs.EOF
......................
Loop
'Questo il Timer:
Private S As Short
Private N As Short
Private Sub TimerTempoTrascorso_Tick(sender As Object, e As EventArgs) Handles TimerTempoTrascorso.Tick
Dim Secondi As String, Minuti As String, TempoTrascorso As String
S += 1
N += 1
Minuti = Int(N / 60)
If N > 59 Then
S = N - Minuti * 60
End If
If S < 10 Then
Secondi = ":0" & S
Else
Secondi = ":" & S
End If
If Minuti < 60 Then
TempoTrascorso = "0" & Minuti
Else
TempoTrascorso = Minuti
End If
TempoImport.Text = TempoTrascorso & Secondi
End Sub
Grazie per qualsiasi suggerimento; di fatto sto passando adesso da VB6 a VB.NET e qualche problema lo sto incontrando.