MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Formulário para pesquisa mais rápido

    rg3915
    rg3915
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 119
    Registrado : 17/06/2013

    Formulário para pesquisa mais rápido Empty Formulário para pesquisa mais rápido

    Mensagem  rg3915 6/6/2014, 18:00

    Imagine um formulário com um campo chamado Pesquisar
    e imagine um subformulário no modo folha de dados que retorna os dados segundo informações que eu digitar em Pesquisar.

    Para resolver isso eu uso um filtro, exemplo:

    Código:
    Me.SubformuláriodeNavegação.Form.Filter = filtro & " AND Cliente='" & Me.Pesquisar & "'"

    Só que quando eu abro o formulário ele já demora 10 segundos porque carrega 8000 registros. A folha de dados é baseada em consulta com pelo menso 8 campos.

    Depois quando eu faço a busca ele demora uns 7s pra retornar.

    Já estou usando campo indexado (eu acho, não sei de fato como verifica isso).

    Pergunta: Por boas práticas seria melhor eu abrir o formulário vazio, sem nenhum registro? E só retornar os registros que eu digitar na Pesquisa?

    Mas como eu faço para agilizar a pesquisa?

    Parece que mesmo já tendo retornardo os dados ele fica lendo a tabela até chegar no fim.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    Formulário para pesquisa mais rápido Empty Re: Formulário para pesquisa mais rápido

    Mensagem  JPaulo 6/6/2014, 18:10

    Ajuda ?

    http://maximoaccess.forumeiros.com/t42-pesquisa-avancada


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Formulário para pesquisa mais rápido Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Formulário para pesquisa mais rápido Folder_announce_new 102 Códigos VBA Gratuitos...
    Formulário para pesquisa mais rápido Folder_announce_new Instruções SQL como utilizar...
    rg3915
    rg3915
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 119
    Registrado : 17/06/2013

    Formulário para pesquisa mais rápido Empty Re: Formulário para pesquisa mais rápido

    Mensagem  rg3915 9/6/2014, 17:59

    JPaulo, ajudou um pouco, mas como eu queria usar o mesmo campo de busca para 3 campos diferentes, eu usei um recurso do app Maestro do Avelino Sampaio.

    Código:
    Private Function fncFiltrar(NomeCampoFoco As String)

    Dim x As String, filtro As String, strSplit As String
    Dim f(4) As String, cp(4) As Variant
    Dim k As Variant, p As Byte
    Dim booFiltro As Boolean, booPos As Boolean
    Dim strCliente As String

    On Error Resume Next
    x = Me(NomeCampoFoco).Text: p = 0
    For p = 0 To 2
        cp(p) = IIf(InStr(NomeCampoFoco, "tx" & p + 1) > 0, x, Me("tx" & p + 1))
    Next

    'Apenas um campo para localizar 3 colunas.
    f(0) = "NOrc Like '" & cp(0) & "*' OR Cliente Like '*" & cp(0) & "*' OR Obra Like '*" & cp(0) & "*'"

    strSplit = Len(cp(0) & "") & "|" & Len(cp(1) & "") & "|" & Len(cp(2) & "") & "|" & Len(cp(3) & "")
    k = Split(strSplit, "|")

    filtro = "": p = 0
    For p = 0 To UBound(k)
        If Val(k(p)) > 0 Then
            If booPos = False Then
                filtro = f(p): booPos = True
            Else
                filtro = filtro & " AND " & f(p)
            End If
            booFiltro = True
        End If
    Next p

    Me.SubformuláriodeNavegação.Form.Filter = filtro & " AND Tecnico = " & login.ID
    Me.SubformuláriodeNavegação.Form.FilterOn = booFiltro
    Me(NomeCampoFoco) = x

    On Error Resume Next
    If booFiltro Then
        Me(NomeCampoFoco).SelStart = Len(x & "")
    Else
        Me(NomeCampoFoco).SetFocus
    End If

    End Function

    Mas eu queria te perguntar uma coisa: percebi que quando o subform retorna apenas um registro ele entra em loop. Qual seria o problema? Detalhe, eu tenho campos com SeImed na consulta.

    Conteúdo patrocinado


    Formulário para pesquisa mais rápido Empty Re: Formulário para pesquisa mais rápido

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/12/2024, 16:07