MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]Pesquisa avançada perde acesso ao BD

    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 8/8/2019, 21:07

    Pessoal,

    Meu BD foi gerado com base em pesquisas e em muitas ajudas encontradas aqui no forum, e desde já agradeço a ajuda de todos vocês.

    O Form principal tem um botão de pesquisa (lupa). Esse botão abre outro formulário para pesquisas, e me permite fazer buscas dentro do BD, do tipo "contém, não contém, começa com, termina com", e com uma função de double click para levar o cadastro encontrado para o form principal.

    Acontece que, quando os dados do cadastro é levado para o forme principal, parece que o form se desconecta do BD, ou seja, o cadastro é isolado do restante do BD.

    O Form principal tem os botões de "anterior e próximo". nesses botões eu adicionei uma msgbox para informar quando não houver registos antes ou depois. Então, quando eu clico em um dos botões aparece o msgbox informando que não há registros anteriores e posteriores.

    Quem puder me ajudar a desvendar esse mistério, AGRADEÇO.

    o bd está anexo.

    o Form principal é o frm_Cadastro.
    Anexos
    [Resolvido]Pesquisa avançada perde acesso ao BD Attachmentbd.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (178 Kb) Baixado 11 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2899
    Registrado : 21/04/2011

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Marcelo David em 8/8/2019, 21:40

    Boa tarde,
    quando você aplica um filtro em uma formulário (acoplado) o recordset dele retornar apenas com o registro filtrado.
    Por isso não há registros anteriores e posteriores. Pois na filtragem foi determina as condições que você
    queria que fossem retornados os registros.

    Isso não é um problema e sim uma característica.

    Você poderá definir a propriedade filter como off, assim ele voltará para o primeiro registro e poderá novamente
    percorrer todos.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 9/8/2019, 12:59

    Amigo Marcelo ,

    infelizmente não consegui modificar.

    Inseri no formulário "Cadastro" a linha Me.FilterOn = False, mesmo assim, quando retorna o filtro,permanece sem os registros anteriores e posteriores.
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 12/8/2019, 13:52

    Alguém consegue dar uma ajuda nesse BD?
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2899
    Registrado : 21/04/2011

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Marcelo David em 12/8/2019, 14:04

    Não há nenhum problema com seu formulário. Fiz todos os testes aqui e realmente o que ocorre é o que falei na minha
    primeira mensagem.

    Também teste com comando que falei e funcionou normalmente.

    Me.FilterOn = False deve ser posto em um botão no formulário frm_Cadastro.
    Ponho um botão tipo "Remover filtragem". E no clique desse botão, o Me.FilterOn = False.
    Teste e retorne por favor.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 12/8/2019, 14:28

    Amigo Marcelo,

    Funciona perfeitamente.

    mas tenho uma dúvida, se puder mais uma vez.

    Há como já remover o filtro sem precisar utilizar um botão?

    ou seja, o duplo clique no formulário de busca retornar para o form Cadastro, no cadastro que foi selecionado mas já sem o filtro.

    vc já me ajudou muito, mas, se puder me dar mais uma dica, agradeço.
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2899
    Registrado : 21/04/2011

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Marcelo David em 12/8/2019, 15:05

    Nesse caso, no formulário de busca, ponha isso:

    Forms!frm_Cadastro.FilterOn = False


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 16/9/2019, 14:33

    Caro amigo Marcelo.

    Sou sempre grato pelas suas ajudas.

    nesse caso, há como remover o filtro, mas, permanecer no registro filtrado?

    Por exemplo, o duplo clique me leva para o registro "3". quando aplico " Forms!frm_Cadastro.FilterOn = False " , o formulário me leva para o registro "1", liberando o controle de navegação, certo?

    O ideal para o meu BD seria liberar o filtro , mas, o formulário permanecer com o registro "3" na tela, sem retornar para o registro "1"
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 20/9/2019, 14:14

    Alguém, alem do amigo Marcelo,tem uma sugestão?
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 957
    Registrado : 01/03/2014

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Celso Roberto em 21/9/2019, 07:27

    Olá..

    Existe uma possibilidade de fazer o que deseja sem botão para remover o filtro, faça as alterações abaixo e verifique se te atende.

    1 - No frm_Buscaavancada,  Altere o código do duplo clik para este junto a Public Function FiltroCadastro()

    Código:
    Private Sub Código_DblClick(Cancel As Integer)

        Dim stDocName As String
        Dim stLinkCriteria As String
      
        stDocName = "frm_Cadastro"
        stLinkCriteria = "[CódigoCadastro]=" & Forms![frm_Buscaavancada]![frm_sub_ListaResult]!CódigoCadastro
        DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit
        DoCmd.GoToControl "NOME"
        
        FiltroCadastro

    End Sub


    Public Function FiltroCadastro()

        On Error Resume Next
        Dim recClone As Recordset
        Dim intTotalRecords As Integer
        Dim intCurrentRecord As Integer
        Set recClone = Me.RecordsetClone()
        recClone.MoveLast
        recClone.Bookmark = Me.Bookmark
        intCurrentRecord = recClone.AbsolutePosition + 1
        intTotalRecords = recClone.RecordCount
        MsgBox "Você está no registro: " & intCurrentRecord & " de " & intTotalRecords

        If CurrentProject.AllForms("frm_Cadastro").IsLoaded = True Then
            Forms!frm_Cadastro!TxtRegistro.SetFocus
            Forms!frm_Cadastro!TxtRegistro = intCurrentRecord
        End If
        
        recClone.Close

    End Function


    2 - No frm_Cadastro acrescente um campo oculto e renomeie com nome de TxtRegistro

    3 - No botão que muda para  registro anterior, cole este código no evento ao ao clicar

    Código:
    Private Sub btAnterior_Click()
        If IsNull(Me.TxtRegistro) Or Me.TxtRegistro = "" Then
            On Error Resume Next
            DoCmd.GoToRecord acForm, "frm_Cadastro", acPrevious 'Vai para registro anterior
            Exit Sub
        Else
            'DoCmd.ShowAllRecords 'Mostrar todos registros
            'Ou
            Me.FilterOn = False 'Remove o Filtro
            DoCmd.GoToRecord acDataForm, "frm_Cadastro", acGoTo, TxtRegistro 'Mantém registro no selecionado no Me,TxtRegistro
            DoCmd.GoToRecord acForm, "frm_Cadastro", acPrevious 'Vai para registro anterior
            Me.TxtRegistro = ""
            DoCmd.Close acForm, "frm_Buscaavancada"
        End If
       
    End Sub

    4 - No botão que move para próximo registro, cole este no evento ao clicar

    Código:
    Private Sub btProximo_Click()
        If IsNull(Me.TxtRegistro) Or Me.TxtRegistro = "" Then
            On Error Resume Next
            DoCmd.GoToRecord acForm, "frm_Cadastro", acNext 'Vai para próximo registro
            Exit Sub
        Else
            'DoCmd.ShowAllRecords 'Mostrar todos registros
            'Ou
            Me.FilterOn = False 'Remove o Filtro
            DoCmd.GoToRecord acDataForm, "frm_Cadastro", acGoTo, TxtRegistro 'Mantém registro no selecionado no Me,TxtRegistro
            DoCmd.GoToRecord acForm, "frm_Cadastro", acNext 'Vai para próximo registro
            Me.TxtRegistro = ""
            DoCmd.Close acForm, "frm_Buscaavancada"
        End If
       
    End Sub


    Faça testes e retorne

    Aguardamos

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 957
    Registrado : 01/03/2014

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Celso Roberto em 23/9/2019, 18:30

    Olá..

    A minha sugestão anterior busca a posição do registro no formulário frm_Buscaavancada e grava no formulário frm_Cadastro, então se por ventura a ordem de classificação for alterada em um dos formulários o resultado será errado.

    Então sugiro uma outra opção que é pelo CódigoCadastro, Desta forma não correrá o risco de dar resultado errado ao remover o filtro.

    A forma é bem mais simples, siga os passos abaixo:

    1 - No frm_Buscaavancada, Altere o código do duplo clik para este

    Código:
    Private Sub Código_DblClick(Cancel As Integer)

        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "frm_Cadastro"
        stLinkCriteria = "[CódigoCadastro]=" & Forms![frm_Buscaavancada]![frm_sub_ListaResult]!CódigoCadastro
        DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit
        DoCmd.GoToControl "NOME"
    End Sub

    2 - No botão que muda para registro anterior, cole este código no evento ao ao clicar

    Código:
    Private Sub btAnterior_Click()
        Dim RegAtual As Integer
        On Error Resume Next
        If (Me.FilterOn) Then 'Se existe filtro
            RegAtual = Me.Código 'Grava registro atual na Variável RegAtual
            DoCmd.RunCommand acCmdRemoveFilterSort 'Se filtro for True, Remove o Filtro
            DoCmd.SearchForRecord , "", acFirst, "[CódigoCadastro] =" & RegAtual 'Vai para Registro definida na Variável RegAtual
            DoCmd.GoToRecord acForm, "frm_Cadastro", acPrevious 'Vai para registro anterior
            DoCmd.Close acForm, "frm_Buscaavancada" 'Fecha formulario de pesquisa
        Else
            DoCmd.GoToRecord acForm, "frm_Cadastro", acPrevious 'Vai para registro anterior
        End If
    End Sub

    3 - No botão que move para próximo registro, cole este no evento ao clicar

    Código:
    Private Sub btProximo_Click()
        Dim RegAtual As Integer
        On Error Resume Next
        If (Me.FilterOn) Then 'Se existe filtro
            RegAtual = Me.Código 'Grava registro atual na Variável RegAtual
            DoCmd.RunCommand acCmdRemoveFilterSort 'Se filtro for True, Remove o Filtro
            DoCmd.SearchForRecord , "", acFirst, "[CódigoCadastro] =" & RegAtual 'Vai para Registro definida na Variável RegAtual
            DoCmd.GoToRecord acForm, "frm_Cadastro", acNext 'Vai para próximo registro
            DoCmd.Close acForm, "frm_Buscaavancada" 'Fecha formulario de pesquisa
        Else
            DoCmd.GoToRecord acForm, "frm_Cadastro", acNext 'Vai para próximo registro
        End If   
    End Sub


    Não deixe de retornar após fazer testes se é o que pretende

    Aguardamos

    Abraços






    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 957
    Registrado : 01/03/2014

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Celso Roberto em 3/10/2019, 20:56

    Olá..

    Conseguiu resolver?

    Caso sim, por favor encerre o tópico
    Caso não, vamos dar continuidade

    Continuamo aguardando o seu retorno


    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 22/01/2019

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  costa256 em 9/10/2019, 15:34

    Amigo Celso,

    mais uma vez, obrigado pela ajuda.

    Consegui resolver de uma forma bem simples, com sua ajuda, claro!

    Inserir o "FilterOn = False" nos botões de controle, e funcionou perfeitamente.

    Muito obrigado!
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 957
    Registrado : 01/03/2014

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Celso Roberto em 9/10/2019, 19:32

    Olá..

    Ficamos felizes que tenha conseguido

    O fórum agradeceo seu retorno

    Abraços e sucesso


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....

    Conteúdo patrocinado

    [Resolvido]Pesquisa avançada perde acesso ao BD Empty Re: [Resolvido]Pesquisa avançada perde acesso ao BD

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/12/2019, 15:21