ADO -
Filtrando Recordsets.

As vezes precisamos visualizar os dados de diversas maneiras . Vamos supor que você tenha que exibir os nomes de uma tabela discriminados pela letra inicial do nome.
Uma maneira simples de obter o resultado é aplicar um filtro ao conjunto de registros selecionados usando a propriedade Filter da ADO.
A sintaxe é a seguinte : objRecordset.Filter = criterio
onde criterio poder :
| Enumerator | Description | 
| adFilterNone | Desabilta o Filtro. Todos os registros pode ser visualziados. | 
| adFilterPendingRecords | No modo de atualização em lote , permite que você veja somente os registros que estão pendentes de atualização. | 
| adFilterAffectedRecords | Permite visualizar somente os registros afetados pelos comandos :affected by the Delete, Resync, UpdateBatch e CancelBatch. | 
| adFilterFetchedRecords | Permite exibir somente os registros que estão atulamente no cache da maquina cliente. | 
| adFilterConflictingRecords | Permite exibir as colisões da atualização em lote(batch update) ou seja os registros que no modo de atualização em lote estão com conflitos de concorrência no servidor. | 
Exemplo Prático
Vamos mostrar como usar esta técnica para filtrar os registros da tabela Authors do banco de dados Pubs no SQL Server 2000 . A idéia e permitir a visualização dos nomes pela letra inicial permitindo que o usuário selecione em uma combobox a letra para a qual deseja exibir os registros.
1- Inicie um novo projeto no VB e no formulário padrão insira os controles conforme layout abaixo:

2- Na seção general Declarations insira o código para declarar as varíaveis
| Dim sql As String Dim rs As New ADODB.Recordset | 
3- No evento Load do formulário insira o código que irá fazer a conexão com o banco de dados - procedure conecta , e preencher a combo os letra do alfabeto
| Private Sub Form_Load() conecta For i = 0 To 25 Combo1.AddItem Chr(65 + i) Next Combo1.ListIndex = 0 End Sub | 
4- A seguir o código da procedure conecta que usa um objeto recordset para criar o conjunto de registros
| Private Sub conecta()
sql = "select * from authors"
rs.ActiveConnection = "Provider=SQLOLEDB;" & _
                      "User ID=sa;" & _
                      "Data Source=MACORATI\MACORATTI;" & _
                      "Initial Catalog=pubs"
rs.Open sql, , adOpenDynamic, adLockOptimistic
End Sub | 
5- O código para gerenciar quando o usuário clicar na combobox e invoca a procedure para exibir os registros conforme a letra escolhida via procedure mostra()
| Private Sub Combo1_click() If Combo1.ListIndex <> -1 Then Call mostra(Combo1.Text) End If End Sub | 
6- Finalmente a procedure mostra(letra as string)
| Private Sub mostra(letra As String)
rs.Filter = "au_lname Like '" & letra & "%'"
List1.Clear
Do While Not rs.EOF
  List1.AddItem rs.Fields("au_lname") & ", " & rs.Fields("au_fname")
  rs.MoveNext
Loop
End Sub | 
Observe a linha de código que realiza o filtro:
rs.Filter = "au_lname Like '" & letra & "%'"
usamos o operador Like e a letra selecionada (entre aspas simples) e o operador % indicando que vamos selecionar todos os primeiros nomes com a letra escolhida. Para a letra A teríamos :
rs.Filter = au_lname Like 'A%'
Abaixo o resultado do processamento para letra D:

Até a próxima ... 