Per prima cosa, non è necessario utilizzare una variabile d'appoggio di tipo Adodb.Field per leggere il recordset; infatti all'interno del ciclo di Do ti basta leggere il recordset stesso.
E poi, quando assegni alla proprietà Text della listview il valore del campo del recordset, non devi utilizzare i doppi apici.
Ti consiglio di fare sempre un MoveFirst sul recordset dopo che lo hai aperto.
Quindi il tuo codice corretto è questo:
codice:
Private Sub Command1_Click()
Dim itm As ListItem
Dim sItm As ListSubItem
Dim strKey As String
'specifica il tipo di layout della listview
ListView.View = lvwReport
Call connetti
'aggiunge i nomi delle colonne
ListView.ColumnHeaders.Add Text:="Ora Inizio"
ListView.ColumnHeaders.Add Text:="Nome Trasmissione"
ListView.ColumnHeaders.Add Text:="Canale"
Rs.Open "Select OraInizio, NomeTrasmissione, Canale _
from epg ORDER BY Gradito"
Rs.MoveFirst
'aggiunge le voci in elenco
Do While Not Rs.EOF
strKey = CStr(Rs(0).Value)
strKey = "K" & strKey
'riempie la listbox coi nomi
Set itm = ListView.ListItems.Add(Key:=strKey, Text:=Rs(1).Value)
Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
Rs.MoveNext
Loop
Rs.Close
PS: per chiudere i tag devi usare lo slash / non il backslash \