FILTRAR RECORDSET POR SEQUENCIA NUMERICA

TECSOMVAL 05/11/2013 13:13:43
#430753
Olá pessoal, boa tarde a todos!

Estou desenvolvendo um pequena aplicação e gostaria de filtrar um recordset tendo como parâmetro uma sequência de números.

Eu quero filtrar todos os registros cujo o código contenha a sequência [Ô]11[Ô]. Então seriam retornados todos os registros que contivessem o 11 tipo: 1011, 11, 1199, 1111...

Filtrar campos texto eu consigo com o código abaixo:

rst.Filter = [Ô]campo like [ô] *ma* [ô] [Ô]

Esse código retorna todos os registros onde campo contenha a sequência [Ô]ma[Ô] tipo: marcos, amarildo, algema...

Nota: Eu estou usando o Visual Basic 6 com banco de dados Access e recordset ADO.



MARCELO.TREZE 05/11/2013 13:57:22
#430764
qual é sua duvida? pois você ja postou a solução

rst.Filter = [Ô]campo like [ô] *11* [ô] [Ô]

TECSOMVAL 05/11/2013 15:02:14
#430765
Pois amigo, MARCELO-TREZE

Esse código só funciona com tipo de dados texto. Com números não funciona e o tipo de dado do campo código do meu projeto é número.

Agradeço a atenção, mas não funciona
OCELOT 05/11/2013 15:17:20
#430766
é meio que um chute, mas por ser access eu tentaria o seguinte

rst.Filter = [Ô]CStr(campo) like [ô] *11* [ô] [Ô]

Não sei se no filtro ele vai aceitar o cstr, se não me engano em SQL o access aceita algumas funções do VBA
TECSOMVAL 05/11/2013 15:34:07
#430769
Acabei de testar. não funciona

vrLOCA.Filter = [Ô]CStr(cpCODI) like [ô]*11*[ô] [Ô]

Obrigado. Mais alguma sugestão?
MARCELO.TREZE 05/11/2013 16:36:32
#430771
é que da forma que ele está utilizando não funciona mesmo teria de ser algo tipo


vrLOCA.RecordSource = [Ô]SELECT * FROM Tabela WHERE CStr(cpCODI) Like [ô]%11%[ô][Ô]

mas acredito que também não funcione, creio que ele terá de ler todas as variáveis jogar uma a uma em uma string e comparar

[ô]
TECSOMVAL 05/11/2013 22:47:07
#430777
Olá, boa noite

Gostaria de obter uma solução com o método filter pois agilizaria a consulta. Temo que executar uma instrução select tornaria o sistema lento com o crescimento da base de dados.

Estou utilizando o evento change de um textbox e a cada alteração o recordset é filtrado e o resultado é apresentado em um datagrid.

Com tipo de dado texto funciona normal mas com número, não.

Segue parte do código para análise dos caros colegas:

Private Sub txLOCA_Change()
Dim strText As String
Dim strRetorno As String
Dim strVal As String
Dim lngSelStart As Long
Dim strPro
On Error Resume Next

strRetorno = txLOCA.Text
lngSelStart = txLOCA.SelStart


strText = [Ô]*[Ô] & txLOCA.Text & [Ô]*[Ô]
strVal = txLOCA.Text (aqui está o problema: não sei qual caractere coringa devo usar, já tentei *, % e # - não deu certo)

If IsNumeric(txLOCA.Text) Then
strPro = strVal
Else
strPro = strText
End If


If Me.txLOCA.Text <> Nulo Then
vrLOCA.Filter = [Ô][Ô] & CampoProcura & [Ô] like [Ô] & strPro & [Ô][Ô] (CampoProcura é uma variável setada em outro procedimento)
dgLOCA.Columns(0).Visible = False
lbTOTA.Caption = [Ô]Total de Registros: [Ô]
lbTOTA.Caption = lbTOTA.Caption & [Ô] [Ô] & vrLOCA.RecordCount
Me.txLOCA = strRetorno
Me.txLOCA.SelStart = lngSelStart
Else
vrLOCA.Filter = [Ô][Ô]
vrLOCA.Requery
dgLOCA.Columns(0).Visible = False
lbTOTA.Caption = [Ô]Total de Registros: [Ô]
lbTOTA.Caption = lbTOTA.Caption & [Ô] [Ô] & vrLOCA.RecordCount
Me.txLOCA = strRetorno
Me.txLOCA.SelStart = lngSelStart
End If
End Sub

Lembrando que eu estou usando VB6, banco de dados access e ADO
TECSOMVAL 11/11/2013 13:25:54
#430974
Olá pessoal,

Mudei o tipo de dado para texto mesmo. Na hora de fazer as operações eu aplico as funções de conversão.

Obrigado pela atenção.
Faça seu login para responder