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.

Rispondi quotando