Originariamente inviato da vr-claudio
Ciao oregon, gentilmente un piccolo esempio per capire meglio?
vrclaudio
Non sai come impostare una WHERE, o non sai aggiungerla alla tua stringa SQL ?
Spiegati meglio.

A parte questo, sei sicuro che il ListView sia il controllo più adatto?
1. Se gli elementi da visualizzare sono molti i tempi di risposta potrebbero essere assai lunghi, considera che ad ogni cambio del filtro sull'azienda devi svuotare il ListView e ricaricare di nuovo i dati con il ciclo.
2. Se aggiungi ulteriori campi, devi modificare il codice.

Le griglie data-aware sono invece predisposte a questo scopo (il ListView serve più per altre cose).
Ad esempio, se tu usassi un DataGrid, dopo aver caricato "TUTTI" i dati nel recordset ti basta fare così:
codice:
Set DataGrid1.DataSource = rs
ed hai la griglia popolata istantaneamente! Non serve più alcun ciclo For/Next per caricarli.

Quando poi devi applicare un filtro, senza ricaricare da zero i dati, usi il metodo Filter del Recordset:
codice:
rs.Filter = "azienda = '" & List1.Text & "'"
Credo sia tutta un'altra musica rispetto al dover ricreare e caricare ogni volta tutti gli elementi nel ListView, non trovi?
Inoltre, se aggiungi un campo alla tua SELECT, non devi cambiare niente perchè il DataGrid si adatta automaticamente.

Infine, invece di aprire il recordset come fai tu:
rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly
fai così:
rs.Open strSQL, conn, adOpenForward, adLockReadOnly, adCmdText
oppure così (è la stessa cosa dato che adOpenForward e adLockReadOnly sono i valori predefiniti:
rs.Open strSQL, conn, , , adCmdText
in locale magari non si nota molto la differenza, ma in applicazioni di rete spesso l'aumento di velocità è notevole!
Dato che stai solo leggendo i dati, non serve usare adOpenKeyset, rallentare solo il caricamento dei dati.

Ciao