Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    [VB6]: Caricamento in List1

    Ciao ragazzi
    come dice l'oggetto devo aumentare la velocità di caricamento di tutti i comuni d'italia all'interno di una List1.
    Io utilizzo questo:

    Dim rst1 As Recordset, DB1 As Database

    Set DB1 = OpenDatabase("C:\...\DB\DB.mdb")
    Set rst1 = DB1.OpenRecordset("SELECT DISTINCT CITTA FROM COMUNI")
    Do While Not rst1.EOF
    CBO_CITTA.AddItem rst1.Fields("CITTA").Value
    rst1.MoveNext
    Loop
    rst1.Close
    DB1.Close

    Questo va bene ma mi rallenta di parecchio il caricamento, tenendo conto che il code è all'interno dell'evento Form_Load.
    Siate cosi' gentili di darmi un'altra soluzione, sono a completissima disposizione.
    N.B.: Per motivi di estetica devo utilizzare solamente la list1.

    Ciao e grazie, vrclaudio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Di sicuro qualcuno ti rimprovererà perché usi ancora DAO; d'altra parte se il tuo scopo è velocizzare questo caricamento, il vecchio e superato DAO è il modello che fornisce le migliori prestazioni con database di Access locali.
    Venendo al problema, un miglioramento di tipo tecnico può essere quello di aprire un recorset di tipo ForwardOnly, mentre, da un punto di vista applicativo, potresti pensare di far scegliere all'utente prima la provincia e poi caricare solo i comuni della provincia selezionata.
    Mi lascia qualche dubbio quel DISTINCT della query, che ti carica un solo comune in caso di omonimia.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Perchè stai usando il peggior modo di visualizzare i dati.
    Considerando che i comuni d'Italia sono oltre 8.000, che senso ha caricarli in un ListBox?
    Usa i controlli predisposti a questo uso, cioè una griglia data-aware come il DataGrid o MsHFlexGrid, ma se non devi formattare i dati è meglio i DataGrid.

    Ah, scusa, dimenticavo che usi DAO, allora puoi usare il vecchio DBGrid32.OCX, che non è installata con il VB6 (almeno non più) ma la trovi sul 3° CD del VisualStudio 6.0, con il relativo fle .REG per registrare la licenza.
    Se usavi ADO avevo già un progetto pronto per farti vedere la velocità di caricamento dei comuni, che puoi comunque scaricare ed adattare alle tue esigenze.

    ADO DataProject 2
    http://nuke.vbcorner.net/Progetti/VB...8/Default.aspx

    Questo invece serve a creare una barra multi-filtro super veloce (tipo la TrueDBGrid):
    Progetti vari: DataGrid_FilterSearch
    http://nuke.vbcorner.net/Progetti/VB...9/Default.aspx

    Ciao

  4. #4
    Devi inserire un DoEvents all'interno del ciclo do while per far si che la CPU non debba dedicarsi soltanto al tuo ciclo.

    Facci sapere...
    Ciao.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    Scusate il ritardo...

    Ciao ragazzi,
    scusate il ritardo ma ho avuto un febbrone da mucca pazza, al di là di questo volevo dirvi che ho provato DoEvents ma nulla da fare è sempre comunque lento e ho tolto anche DISTINCT ma non cambia niente.
    Per quanto riguarda la tipologia d'oggetto anziche List1 applicare una TrueDBGrid o DataGrid, come accennato nel mio post non posso mettere nient'altro causa estetica del progetto.

    Sono a tutt'orecchi per altre idee...
    Ciao, vr-claudio

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: Scusate il ritardo...

    Originariamente inviato da vr-claudio
    Per quanto riguarda la tipologia d'oggetto anziche List1 applicare una TrueDBGrid o DataGrid, come accennato nel mio post non posso mettere nient'altro causa estetica del progetto.

    Sono a tutt'orecchi per altre idee...
    Ciao, vr-claudio
    Allora mi sa proprio che dovrai tenertelo così.

    Cosa c'entra l'estetica del progetto?
    Nei miei progetti invece di un Listbox uso un TextBox, cosa cambia esteticamente di così radicale da non poterlo fare?

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758

    Re: Scusate il ritardo...

    Originariamente inviato da vr-claudio
    ho provato DoEvents ma nulla da fare è sempre comunque lento e ho tolto anche DISTINCT ma non cambia niente.
    Non credo, Inserendo un DoEvents in mezzo è diventato sicuramente PIU' LENTO di prima.
    Originariamente inviato da vr-claudio
    Sono a tutt'orecchi per altre idee...
    Altre idee... ma quella di scegliere prima la provincia cosa ha che non ti aggrada ?

    Comunque concordo con gibra sul fatto dell'estetica.


  8. #8

    Re: Re: Scusate il ritardo...

    Originariamente inviato da Grumpy
    Non credo, Inserendo un DoEvents in mezzo è diventato sicuramente PIU' LENTO di prima.
    In effetti il DoEvents non serve a velocizzare l'operazione...ma a far si che il form non rimanga occupato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.