Vixi... exemplo prático eu não tenho agora... mas não é difícil não...
Veja como fazer com um BD do MSAccess:
Dim DB As ADODB.Connection
Dim RS As ADODB.Recordset
Dim conn As String
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Caminho_Arquivo.mdb"
DB.Open conn
RS.CursorLocation = adUseClient 'IMPORTANTE para não acontecer erro ao ligar o Grid a tabela do seu Recordset
RS.Open "Select * from Tabela ORDER BY nome_do_campo DESC", DB 'classifica a tabela pelo campo em ordem DECRESCENTE
Set DataGrid1.DataSource = RS
Pronto!! Ligamos um DataGrid a uma tabela!

Agora vou passar a dica q o pessoal do site me ajudou...
Fazendo consultas sem fechar o recordset:
Para localizar registros, podemos usar o "find":
RS.MoveF irst 'não perde o ponteiro
RS.Find "nome_do_campo = valor" 'no caso de valores do tipo string coloque entre aspas simples por exemplo: 'joao'
Para filtrar registros podemos usar o filter:
RS.Filter = "Nome_do_campo = valor" 'no caso de valores do tipo string coloque entre aspas simples tb
Para obter todos os registros novamente faça assim:
RS.Filter = "Nome_do_campo >='' "
E para indexar usamos o sort:
RS.Sort = "Nome_do_Campo ASC" 'ou pode ser assim RS.Sort = "Nome_do_campo DESC"
Como disse antes não tenho exemplo prático mas se quiser eu monto um. É só pedir
Espero q tenha esclarecido as suas dúvidas
t+