Ir para conteúdo
Fórum Script Brasil
  • 0

FILTRAR RECORDSET POR SEQUENCIA NUMERICA


MDLima

Pergunta

Olá, bom dia

Gostaria de obter uma solução com o método filter para agilizar a consulta, evitando utilizar uma instrução select pois 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

Eu já tentei:

vrLOCA.Filter = "CStr(campo) like ' *11* ' "

Não dá certo

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá MDLima, tudo bem?

Pelo que entendi, você quer filtrar registros em um banco de dados usando um intervalo de números, isso pode ser feito de duas formas com uma instrução sql.

Crie duas caixas de texto com o rótulo respectivamente Num1 e Num2.

Depois de preenchido, efetue a Regra de Validação de Dados, e execute uma instrução na base de dados assim:

select * from tabela1 where codigo between 1 and 5; >> Isso irá filtrar todos os registros com código de 1 a 5.

ou ainda:

select * from tabela1 where codigo >= 1 or codigo <=5; >> Isso também terá um efeito de filtragem de código de 1 a 5.

Espero ter ajudado

Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Flechaus

Grato pela atenção. Acontece que eu preciso de um código que pesquise por uma sequência e não por número inteiro. O seu exemplo pelo que eu entendi vai retornar os números compreendidos entre 1 e o 5 (em seu exemplo). Eu precisaria que retornasse os números que contivessem uma sequência. Exemplo: procurar por sequência 12 em uma base de dados retornaria números como: 341245, 12, 1200, 3512... entendeu?

Grato

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz..

Primeiro de tudo, se você se preocupa com o crescimento da sua base de dados, deixe de usar o Access, e migre para o MySQL 5.1, é uma dica de irmão, vai por mim!

Se você se preocupa com a rapidez desta procura ou filtragem, crie um índice neste campo, isso pode fazer uma diferença monstruosa.

Se este campo, é um campo tipo numérico, e se é unívoco, ou seja, seus valores são sempre diferentes dos demais, recomendo uma select filtrando pelo número exato.

Uma instrução Like em um banco de dados do Access, usa uma wildcard para substituição de todos os caracteres igual a asterístico * (no MySQL 5.1 é um sinal de porcentagem %)

Para pesquisar por números que comecem com 15, deve fazer: campo Like "15*"

Para pesquisar por números que finalizem com 15, deve fazer: campo Like "*15"

Para pesquisar por números que contenham 15, deve fazer: campo Like "*15*"

Estas filtragens podem retornar muitos registros, recomendo filtrar a quantidade dos registros retornados.

Você está usando o Filter, deve estar usando um recordset do tipo tabela, recomendo o uso de Dynasets.

Utilize select para realizar as consultas, é a melhor forma de pesquisar.

Eu se fosse você abandonaria o recordset tabela e trabalharia com tipo Dynaset.

Espero ter ajudado,

Um abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...