Nós usamos a propriedade Filter para estreitar mais as informações que podemos ver no conjunto de registros de acordo com o critério fornecido. Isso é especialmente bom quando há muitos dados sendo retornados. Por exemplo, você poderia filtrar todos os nomes com valor Alexandre, ou todos os registros com estado = SP. Você pode filtrar o seu recordset para visualizar apenas as informações que você quer, sem destruir o resto das informações. Todas as informações continuaram intactas, apenas ficam escondidas até você finalizar a filtragem.
Aplicando a filtragem você obtém um subconjunto de todas as linhas, somente os dados filtrados são exibidos (subconjunto). Assim você pode se mover pelo conjunto de registros do primeiro até o último e ver somente os registros que satisfazem seu critério. Se nenhum registro estiver na filtragem então BOF e EOF serão verdadeiros. Senão, você deve ser posicionado para o primeiro registro. Você pode usar os métodos MoveNext, MovePrevious, MoveFirst e MoveLast, para navegar pelo conjunto de registros filtrados.
Como usar a propriedade Filter
A sintaxe é:
seu_recordset. Filter = valor
Podemos ajustar a propriedade Filter para um valor de uma das seguintes formas:
- Uma declaração WHERE do SQL↳SQL64 conteúdosSQL Server – Como evitar SQL Injection?Data · mai 2019Azure SQL DB Managed InstanceData · abr 2019SQL Server – Como evitar SQL Injection? Pare de utilizar Query Dinâmica como EXEC(@Query)Data · abr 2019Ver tudo em Data →. Você pode fornecer o que é uma sentença WHERE do SQL (entre aspas), usando os nomes de campo do registros, operadores lógicos (<,<=,>,>=,= <>,LIKE), e valores (datas, strings, curingas (* e %) etc., quando usamos LIKE). Não usamos realmente a palavra WHERE, como você vai ver no exemplo de código a seguir.
- Uma matriz de indicadores. Você pode fornecer uma matriz de indicadores, somente os registros indicados estarão disponíveis no conjunto.
- Um valor FilterGroupEnum. Estas constantes estão descritas abaixo:
adFilter desliga a filtragem. Com esta configuração, todos os registros podem ser visualizados
adFilterPendingRecords Em um modo de atualização batch, esta constante garante que você só esta vendo aqueles registros que estão dependendo de update, mudanças que foram feitas no conjunto mas não foram enviadas aos Server.
adFilterAffectedRecords Permite que você visualize apenas os registros afetados pelas chamadas Delete, ReSync, UpdateBatch e CancelBatch.
adFilterFetchedRecords Permite visualizar apenas os registros que estão atualmente armazenados na maquina cliente, recuperados nas consultas mais recentes ao banco de dados.
adFilterConflictingRecords Permite visualizar colisões de atualizações batch, os registros atualizados no do batch com conflitos concorrentes no Server (aqueles que não puderam ser atualizados).
Exemplo:
Pegando o conteúdo da tabela autor e do banco de dados pubs e filtrando o conteúdo pela primeira letra do nome:
<%<br /> grava os elos do alfabeto<br />For intLetra = 65 to 90<br /> Response.write(<a href=filter.asp?letra= &_<br />Chr (intLetra) & > &_<br />Chr (intLetra) & </A> &nbps:nbps;<br />Next<br />Response.write (<BR>)Este exemplo armazena um recordset em uma variável Session. Como foi explicado anteriormente,armazenar os objetos ADO em variáveis Session não é uma boa pratica.Isto foi feito para demonstrar como a técnica de filtragem funciona.
Agora vamos abrir a conexão com o bd pubs e consultar os registros na tabela auto:
If Not isObject (session(RS)) then<br /> Set objrs= Server.CreateObjetc(ADODB.Recordset)<br /> strSQL = SELECT * FROM autor<br /> objrs.ActiveConnection = Provider=SQLOLEDB; &_<br /> User ID=sa; &_<br /> Data Source=teste; &_<br /> Initial Catalog=pubs<br />Objrs.CursorType = 3 adopenStatic<br />Objrs.Open strSQLObserve que o script só precisa ir ao banco uma vez. A primeira vez que o usuário usar a pagina, ele vai visualizar os conteúdos filtrados do recordset, mostrando somente os autores cujo nome inicia com A:
Display(A) ´Exibe os nomes com inicio em A<br />Set session(RS) = objrsVamos ver o procedimento Display, nas consultas subsequentes (quando o objeto da sessão Session(rs) não é nulo), exibimos o conjunto de registros filtrados com a letra de escolha do user, contida na variável letra.
Else<br /> Set objrs = Session(RS)<br /> Strletra = request(letra)<br /> Display (strletra)<br />End IFVamos ver, o procedimento Display, tudo que fazemos é ajustar o filtro (usando a consulta SQL do tipo WHERE) e exibir os conteúdos dos registros filtrados.
Sub Display (strletraToFilter)<br /> ajusta o filtro<br />Objrs.Filter = nome LIKE &strLetratoFilter & % <br />Response. Write <H2> & strLetraToFilter & </H2><br />Response. Write <TABLE Border=1><THEAD> &_<br /> <TH>Nome</TH><TH>Fone</TH><TH>Endereço</TH> &_<br /> <TBBODY><br />DoWhile Not objrs.EOF<br /> Response. Write<TR><TD> &_<br /> Objrs(nome) &, & objrs(Nick) &_<br /> </TD><TD> &_<br /> Objrs(fone) &_<br /> </TD><TD> &_<br /> Objrs(Endereço) &_<br /> </TD><TD></TR><br /> Objrs.MoveNext<br />Loop<br />Response. Write(</TABLE>Na próxima consulta, desligamos o filtro usando a linha
Objrs.Filter = 0 (observe que 0 = adFilterNone)
E movemos o ponteiro de volta para o primeiro registro não filtrado.
Desliga o filtro<br />Objrs.Filter = 0<br />Move para o 1º registro<br />Objrs.MoveFirst<br />End Sub<br />%><br /></TBODY></HTML>




