Newsgroup: it.comp.lang.visual-basic
Titolo: combo elenco comuni d'Italia

All'apertura di una form, su "Form_Load" carico i record in una combo
che comprende tutti i comuni d'Italia (circa 7/8 mila records) ma
impiega almeno 10/12 secondi.
Come dovrei fare per velocizzare il caricamento ?
Potrebbe andarmi bene anche se l'elenco venisse caricato mentre io
inizio a digitare il nome del comune.
Saluti
Sergio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come dovrei fare per velocizzare il caricamento ?
Apri il recordset in modo asincrono, e su ogni lotto che arriva carichi 
solo quegli elementi nella combo (se carichi la combo con un loop).
Se invece carichi la combo con un binding al recordset, effettui il 
binding sul completamento del fetch.
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 Alberto
Scusa ma non ho capito molto, non conosco il significato di "binding" e
quello di "fetch", questo è il codice che ho scritto per caricare la
combo:
'Estraggo dal Database l'elenco dei comuni e metto la descrizione nella
Combobox
e il Codice nell'Array strComune
Per l'estrazione uso un Recordset temporaneo
Dim rsTemporaneo As ADODB.Recordset, i As Integer
Set rsTemporaneo = New ADODB.Recordset
rsTemporaneo.CursorLocation = adUseClient
rsTemporaneo.Open "SELECT *FROM Comuni ORDER BY comune;", _
CnPrev, adOpenStatic, adLockReadOnly, adCmdText
rsTemporaneo.MoveLast
ReDim strComune(rsTemporaneo.RecordCount - 1) As String
rsTemporaneo.MoveFirst
'Con un ciclo viene riempito l'array
For i = 0 To rsTemporaneo.RecordCount - 1
strComune(i) = rsTemporaneo!Id & ""
rsTemporaneo.MoveNext
Next i
'carico la combo
rsTemporaneo.MoveFirst
While Not rsTemporaneo.EOF 'aggiungo ogni record presente nel recordset
nella lista e nella combo
   CmbComune.AddItem rsTemporaneo!Comune ' aggiungo il Linguaggio alla
combo
   CmbComune.ItemData(CmbComune.NewIndex) = rsTemporaneo!Id 'Aggiungo il
valore ID riferito al linguaggio nella proprietà ItemData del combo
   rsTemporaneo.MoveNext ' mi muovo al record seguente
Wend
Cosa posso fare ?


 quello di "fetch"
Su MSDN si trovano entrambi.
Comunque il concetto di loop lo conosci, mi auguro, e visto che ti 
chiedevo se usavi un Binding o un Loop, saresti stato in grado di 
rispondere.
Allora te lo dico io: usi un loop, ossia cicli sul recordset e attacchi 
gli elementi ad uno ad uno.
Vale quindi il discorso dell'apertura asincrona e del caricamento per 
lotti.
E' un discorso un po' più ampio (niente di complesso, solo un po' lungo 
da spiegare), ma su google gruppi troverai parecchi post sull'argomento 
(qualcuno anche mio).


Ti ringrazion per la risposta e mi scuso se sono apparso scorretto, ora
vado a
documentarmi ulteriormente.
Grazie
Ciao
Sergio


 
puoi dare un'occhiata qua 
http://snipurl.com/mdoy

 inizio a digitare il nome del comune.
a parte i suggerimenti di albe, e il thread che ti indica fabsw:
ho appena dovuto far compilare un form web a 70 persone.
scegliendo da un combo lo stato, ricarica la pagina con le province.
scegliendo le province, ricarica i comuni.
li' c'era un delay dovuto al web, ma in locale, se la provincia si sa, e'
senz'altro molto piu' veloce.
se poi hai qualche px, e per le province, che non sono infinite, usi un
listbox, meglio ancora.
ciao, a.