Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

†GnR† Slash

Erro ao utilizar filtro

Recommended Posts

galera

 

To tentando fazer um filtro assim:

 

Rs.Filter = "[campo1] like '%C'"

tá dando erro, mas quando faço:

Rs.Filter = "[campo1] like 'C%'"
funciona.....

 

o erro que tá dando é:

Run-time error '3001':

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another

 

tudo que eu quero fazer é filtar todos registros do campo1 que TERMINEM com C

 

nota: meu recordset é ADO e foi criado dinamicamente de uma tabela no Excel usando código VBA

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro não faz sentido. Estou aqui a um tempão olhando seu código tentando achar algum possível motivo que esteja causando isso e não consigo.

 

Faça um teste. Tente utilizar essa condição quando abre a consulta, veja se também dará erro. Por exemplo:

 

select * From teste where campo1 like '%c'

Depois avisa se deu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for em VBA tente utilizar um "*" em vez de "%"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, obrigado pelas respostas, demorei a postar aqui de novo porque perdi o meu tópico, mas agora achei ele kkkkk

 

Então, não posso usar * pois a consulta que estou fazendo é ADO + VBA dentro do Excel.

 

Fiz o que você sugeriu, então na abertura da consulta eu fiz assim:

 

RS.Open "select [PID_TAG] from [PES$] where [PID_TAG] like '%A'", CN

Funcionou, porém não posso ficar abrindo e fechando o recordset para cada consulta que eu precisar fazer

O correto é abrir a tabela toda e depois ficar usando filtros

 

Para tentar ajudar, o código que eu montei está em uma macro VBA do Excel 2007

A planilha que contém os dados está aberta no Excel e fora isso eu ainda abro ela via ADO connection assim:

 

Dim CN As ADODB.Connection
    Dim RS As ADODB.Recordset
    Dim strCon As String
    Dim strSql As String

    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Teste.xlsx" _
        & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" ' IMEX = 1 singnifica que todos os valores serão tratados como TEXTO
    Set CN = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")
	
    RS.Open "select [PID_TAG] from [PES$]", CN
    rs.Filter = "[PID_TAG] like '%A'"

e é neste ponto que o VBA gera o código de erro... to achando que o comando FILTER não suporta wildcards no início...

e o pior é que eu realmente não tenho outra forma de fazer o que eu quero, ou seja, preciso que um dos filtros me retorne

os campos que TERMINAM com A, na verdade a consulta completa que eu faço é dividida em 3 partes e tem que ser assim:

 

rs.Filter = "[PID_TAG] like 'FT%' and [PID_TAG] like '%60001%' and [PID_TAG] like '%A'"

ou seja, quero filtrar tudo que começe com FT, e que tenha 60001 no meio e que termine com A, mas esse

filtro muda para cada linha do Excel que tenho, por isso que não posso fazer essa consulta na abertura

do recordset, tem que ser filtro que é mais rápido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei reproduzir aqui seu código, mas tive o mesmo problema e não encontrei solução a não ser abrir o recordset de novo mesmo.

 

Deve ser alguma falha do VB ou do ADO, mas parece que ele realmente não aceita '%q'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.