Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6] Ottimizzazione Codice ListView

    Salve,


    HO scritto questo codice per inserire i record da un dtabase ad una listview, però quando i record sono qualche migliaia il codice è molto molto lento...

    codice:
            Dim segno As String
            
            Do While Not Adodcl1.Recordset.EOF
                Set li = .ListItems.Add(, , String(7 - Len(Adodcl1.Recordset!id), "0") & Adodcl1.Recordset!id)
                li.SubItems(1) = Adodcl1.Recordset!Data
                li.SubItems(2) = Adodcl1.Recordset!fattura
                li.SubItems(3) = Adodcl1.Recordset!motivo
    
                
                If lingStampa = 1 Then
                    Select Case Adodcl1.Recordset!tipologia
                        Case "IB"
                            li.SubItems(5) = "Ent. Banca"
                            segno = "+"
                        Case "IC"
                            li.SubItems(5) = "Ent. Cassa"
                            segno = "+"
                        Case "OB"
                            li.SubItems(5) = "Usc. Banca"
                            segno = "-"
                        Case Else
                            li.SubItems(5) = "Usc. Cassa"
                            segno = "-"
                    End Select
                Else
                    Select Case Adodcl1.Recordset!tipologia
                        Case "IB"
                            li.SubItems(5) = "In Bank"
                            segno = "+"
                        Case "IC"
                            li.SubItems(5) = "In Cash"
                            segno = "+"
                        Case "OB"
                            li.SubItems(5) = "Out Bank"
                            segno = "-"
                        Case Else
                            li.SubItems(5) = "Out Cash"
                            segno = "-"
                    End Select
                End If
                
                li.SubItems(4) = segno & Format$(Adodcl1.Recordset!saldo, "#,0.#0")
                
                Adodcl1.Recordset.MoveNext
            Loop
            
        End With
    Qualcuno può darmi una mano ad ottimizzare il codice per farlo diventare più veloce?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Forse una chiamata a SuspendLayout e ResumeLayout per interrompere e ripristinare l'aggiornamento grafico può aiutare.

    Ad ogni modo, il problema principale è dovuto al fatto che proprio il controllo ListView non è adatto alla visualizzazione di un elevatissimo numero di elementi, occupando parecchia memoria rispetto a controlli più leggeri e adatti, come una DataGrid.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Originariamente inviato da alka
    Forse una chiamata a SuspendLayout e ResumeLayout per interrompere e ripristinare l'aggiornamento grafico può aiutare.

    Ad ogni modo, il problema principale è dovuto al fatto che proprio il controllo ListView non è adatto alla visualizzazione di un elevatissimo numero di elementi, occupando parecchia memoria rispetto a controlli più leggeri e adatti, come una DataGrid.
    Scusa, Alka, ma SuspendLayout e ResumeLayout non credo facciano parte di VB6. Al limite si potrebbe rendere Visible=False il controllo sino ad elaborazione avvenuta(anche se non credo che i risultati cambierebbero di molto).
    Concordo comunque con l'errato impiego della ListView (e dell'Adodc, se vogliamo dirla tutta ).Una FlexGrid sarebbe popolata in modo molto piu' rapido e con molto meno codice.

    Ciauz

    CHico

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da chico62
    Scusa, Alka, ma SuspendLayout e ResumeLayout non credo facciano parte di VB6.
    Ah... ops... sì mi riferivo a VB.NET... cancella tutto, o meglio ciò che riguarda i metodi citati, ma tieni per buone le precisazioni fatte sul controllo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Prima utilizzavo una datagrid, ma purtroppo accetta solo il bind, ed io devo inserire i dati manualmente...

    FlexGrid non conosco, è possibile inserire i dati manualmente come nella ListView ed effettuare anche delle modifiche a run time sui dati presenti nella flaxgrid?


    PS: al posto di Adodc che cosa dovrei utilizzare?

  6. #6
    :quote:

  7. #7
    Una ricerchina sul forum no, skorpion, vero ?
    Ci sono solo 5 pagine che trattano l'argomento (STFW) , tra cui:
    http://forum.html.it/forum/showthrea...ighlight=adodc

    (e se l'ho trovato io stai pur certo che l'avresti trovato anche tu)

    Chico

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.