Re: speed up fill listview



"gssitaly via VBMonster.com" <u13846@uwe>'s wild thoughts
were released on Sun, 29 Mar 2009 19:56:41 GMT bearing the
following fruit:

Here my code to fill listview.

Trouble is that the listview refreshes itself each time
something is added. Look up LockWindowUpdate, switching off
the refresh can improve performance.

Another alternative, particularly with a great deal of items
is to look into a 'virtual listview'. You should be able to
find examples on the web.

J

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 frind suggest to use rsetrow, pther 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

--
Jan Hyde
.



Relevant Pages

  • Re: LockWindowUpdate + DoEvents
    ... Subclassing the control and waiting for &HB& won't work. ... >>Is it possible to combine LockWindowUpdate with DoEvents? ... I don't want the ListView to be ... >>LockWindowUpdate lvwFile.hWnd and LockWindowUpdate 0 after finishing. ...
    (microsoft.public.vb.winapi)
  • Re: LockWindowUpdate + DoEvents
    ... > Is it possible to combine LockWindowUpdate with DoEvents? ... One way to deal with your issue is to drop another listview on the form. ... show the empty "fake" listview to the user ...
    (microsoft.public.vb.com)
  • Re: LockWindowUpdate + DoEvents
    ... I don't want the ListView to be ... >LockWindowUpdate lvwFile.hWnd and LockWindowUpdate 0 after finishing. ... >the loop. ... DoEvents seems to cancel my LockWindowUpdate and the ...
    (microsoft.public.vb.winapi)
  • Re: LockWindowUpdate + DoEvents
    ... > Is it possible to combine LockWindowUpdate with DoEvents? ... I don't want the ListView to be ... > LockWindowUpdate lvwFile.hWnd and LockWindowUpdate 0 after finishing. ... > the loop. ...
    (microsoft.public.vb.com)
  • Re: speed up fill listview
    ... Trouble is that the listview refreshes itself each time ... Look up LockWindowUpdate, switching off ...
    (microsoft.public.vb.controls)