![]() |
| ||
| speed up fill listview Here my code to fill listview. When the rset are a few the code work fats but with 154.478 rset the code use a very very time, have asuggestion? A frined suggest me to loop all rset and fill array next loop the array to fill listview. Other friend suggest to use rsrow, other friend suggest use geststring rset... I dont know the right way... Sub FILL_LISTVIEW_2() 'SI Dim TOT As Double, TOT1 As Double, CONTA_RECORD As Long, TOT2 As Double Dim X On Error GoTo errore CONTA_REC = Empty strSQL1 = "SELECT PROVA2,PROVA1,PROVA3,PROVA9,PROVA11,PROVA12,PROVA17, PROVA13,PROVA14,PROVA18 FROM DATI WHERE PROVA16 = '" & Left(Me.COMBO_AREA. Text, 4) & "' ORDER BY PROVA2" Set RSSQLD = CNSQL.Execute(strSQL1) While Not RSSQLD.EOF CONTA_REC = CONTA_REC + 1 RSSQLD.MoveNext Wend RIGA = Empty 'Me.ProgressBar.Visible = True 'Me.ProgressBar.value = Empty Me.ListView.Visible = False Me.ListView.ListItems.Clear LockWindow (SELEZIONE.hwnd) With RSSQLD RSSQLD.MoveFirst While (Not .EOF) Set X = ListView.ListItems.Add(, , .Fields!PROVA2) X.SubItems(1) = .Fields!PROVA1 X.SubItems(2) = .Fields!PROVA3 X.SubItems(3) = .Fields!PROVA9 X.SubItems(4) = .Fields!PROVA11 X.SubItems(5) = .Fields!PROVA12 If IsNull(.Fields!PROVA17) Then X.SubItems(6) = Format(0, "#,##0.00") 'Debug.Print .Fields!PROVA17 Else X.SubItems(6) = Format(.Fields!PROVA17, "#,##0.00") TOT = TOT + X.SubItems(6) End If If IsNull(.Fields!PROVA13) Then X.SubItems(7) = Format(0, "#,##0.00") Else X.SubItems(7) = Format(.Fields!PROVA13, "#,##0.00") TOT1 = TOT1 + X.SubItems(7) End If If IsNull(.Fields!PROVA14) Then X.SubItems(8) = Format(0, "#,##0.00") 'Debug.Print .Fields!PROVA14 Else X.SubItems(8) = Format(.Fields!PROVA14, "#,##0.00") TOT2 = TOT2 + X.SubItems(8) End If If Not IsNull(.Fields!PROVA18) Then X.SubItems(9) = Format(.Fields!PROVA18, "#,##0") Else X.SubItems(9) = Format(0, "#,##0") End If RIGA = RIGA + 1 .MoveNext 'DoEvents 'Me.ProgressBar.value = (RIGA / CONTA_REC) * 100 Wend Me.ListView.Visible = True UnlockWindow 'AltLVBackground ListView, vbWhite, &HC0FFFF 'Call fill_alternate 'SetAlternateItemColours 'Me.ProgressBar.Visible = False End With Me.Label4.Caption = Format(TOT1, "#,##0.00") Me.Label9.Caption = Format(TOT, "#,##0.00") Me.Label14.Caption = Format(TOT2, "#,##0.00") Me.Label6.Caption = Format(ListView.ListItems.Count, "#,##0") Set TT = New CTooltip TT.Style = TTBalloon TT.Icon = TTIconInfo Exit Sub errore: MsgBox "Errore Numero: " & CStr(Err.Number) & vbCrLf & _ "Descrizione: " & Err.Description & vbCrLf & _ "Sorgente dell'Errore: " & Err.Source Err.Clear End Sub |
| ||
| Re: speed up fill listview You missed out on one of the most important suggestion what your other friend gave ;) use a flexgrid instead of listview......... http://www.vbforums.com/showpost.php...80&postcount=3 |
| ||
| Re: speed up fill listview use the LockWindowUpdate just prior to adding items to lock the control and then call it again after the loop to to reenable it Good Luck |
| All times are GMT -4. The time now is 1:14 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC