Ciao Khris22,
guarda che la ListBox non è adatta al lavoro che vuoi svolgere, anche il DataEnvironment è molto limitativo; a mio avviso dovresti usare una ListView e per il DB usare ADO.
Ti posto un esempio d'utilizzo della LV, nel predetto contesto:
codice:
Option Explicit
' Carica la ListView per lettera iniziale della Via:
Sub Ricerca()
' sLetteraRic è una variabile str caricata con la lettera iniziale
' della via (non importa se maiuscola o minuscola):
If Len(sLetteraRic) > 0 Then
' Imposta Mouse Clessidra:
Screen.MousePointer = 11
DoEvents
' Formatta ListView per visualizzare i dati :
FrmArch.LVArchivio.ListItems.Clear
Dim OggSR As New ADODB.Command
Dim ConSR As New ADODB.Connection
Dim RSTrc As New ADODB.Recordset
Dim itmX As ListItem
'Esegue la connessione con il DataBase:
With ConSR
.ConnectionString = DataConnessione
.CursorLocation = adUseClient 'tipo di cursore
.Mode = adModeShareDenyNone 'nessuna limitazione
.CommandTimeout = 15
.Open
End With
OggSR.ActiveConnection = ConSR
OggSR.CommandType = adCmdText
RSTrc.Source = "SELECT Via, NomeVia, Ncivico, Cap, Citta, Provincia FROM TblAnagImmob WHERE NomeVia Like '" & sLetteraRic & "%' Order by NomeVia "
RSTrc.Open , ConSR, adOpenDynamic, adLockOptimistic
' Controlla che il DB contenga i dati da visualizzare:
If RSTrc.EOF = False And RSTrc.BOF = False Then
Do Until RSTrc.EOF
Set itmX = LVArchivio.ListItems.Add()
With RSTrc
itmX.Text = .Fields("Via")
itmX.SubItems(1) = .Fields("Via")
itmX.SubItems(2) = .Fields("NomeVia")
itmX.SubItems(3) = .Fields("Ncivico")
itmX.SubItems(4) = .Fields("Cap")
itmX.SubItems(5) = .Fields("Citta")
itmX.SubItems(6) = .Fields("Provincia")
RSTrc.MoveNext
End With
Loop
' Se i records sono stati caricati vengono visualizzati
' nella LV altrimenti appare il messaggio:
ElseIf RSTrc.EOF = True And RSTrc.BOF = True Then
LVArchivio.ListItems.Add.Text = "Ricerca completata, nessun record trovato ..."
LVArchivio.ToolTipText = "Ricerca completata, nessun record trovato ..."
End If
' Imposta Mouse Default:
Screen.MousePointer = 0
'Chiude e cancella il recordSet:
RSTrc.Close
Set RSTrc = Nothing
'Chiude la connessione:
ConSR.Close
Set ConSR = Nothing
End Sub