Originariamente inviato da Folcus
In un form ho alcune combobox che si riempiono all'avvio del form stesso...solo che questa procedura ci impiega circa 1minuto...e non mi piace proprio l'idea di lanciare il form e dover aspettare perchè si apra. Avevo pensato ad un evento temporizzato. Ossia, dopo 5secondi da quando è attivo il form parte il riempimento delle combobox. Penso con il comando Timer, ma non so proprio come si il codice.
oppure, c'è un modo per fare il riempimento delle combo in background? mantenendo finchè non è finito la combobox non attiva...
Quella di caricare i combobox con i dati di un DB è una prassi che evito il più possibile, la uso solo se sono pochissimi dati per combo (15-20).
Considerando poi che raramente i dati nei combobox sono utilizzati tutti, o tutti insieme.
E se ci impiega un minuto, allora sicuramente è un implementazione da rivedere, troppo tempo.
A parte questo, puoi tentare di 'alleviare' un po' il caricamento caricando prima il form, mostrandolo e poi caricare i combo.
Devi mettere il codice di caricamento in una routine Public del form:
codice:
Public Sub CaricaCombo()
Rem ----------------------------
Rem codice che popola i combo
Rem ----------------------------
End Sub
Quando devi caricare il form fai così
codice:
Dim fDati As frmDati
Set fDati = New frmDati
Load fDati
With fDati
.Show
.Enabled = False ' per evitare che l'utente smanetti
.CaricaCombo
.Enabled = True
Set fDati = Nothing
End Wiht
Ricorda anche di aprire i recordset indicando solo il comando SQL e la connessione:
codice:
rs.Open sStringaSQL, CN
Questo è il modo più veloce di ottenre i dati.
Però io rimango dell'idea che va riveduta l'implementazione
Ciao