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


    [Resolvido]Remover filtro formulário

    avatar
    ictsp
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 02/09/2016

    [Resolvido]Remover filtro formulário Empty [Resolvido]Remover filtro formulário

    Mensagem  ictsp 24/3/2017, 17:52

    Boa tarde amigos! Preciso da ajuda dos colegas. Tenho um form com filtros sequenciais através do qual gero meu Relatório.

    Quando abro o form e clico diretamente no botão Relatório, ele mostra todos os registros sem filtragem. Porém, quando faço uma filtragem  e  Removo os filtros, clicando no botão Relatório, aparece o resultado da ultima filtragem realizada.

    Quando não houver filtragem, gostaria de mostrar todos os registros ao abrir o Relatório.

    Ao abrir o form, o código utilizado é esse:

    Private Sub Form_Load()
          'Define a variável global com o RecordSource original
       gstrRecordSourceOriginal = Forms!PRG!PRGSUB.Form.RecordSource
       
    End Sub

    Para gerar o Relatório uso o seguinte código:

    Private Sub rel_Click()

    DoCmd.OpenReport "TBPR", acPreview, , Me.Filter
    End Sub

    Para limpar os filtros, utilizo o seguinte código:

    Código:
    Private Sub btRemoveFiltro_Click()
    '---------------------------------------------------------------------------------------
    ' Procedimento : btRemoveFiltro_Click  [ 14/6/10 ]
    ' Chamada      : Botão Remover o filtro
    ' Função       : Reinicia os dados do subformulário
    '---------------------------------------------------------------------------------------
    '
        
        'Atribui o RecordSource original ao subformulário

    '**** ATENÇÃO ****
        'Na adaptação ao seu programa as linhas abaixo deve ser escritas como:
        'Forms!NOMEDOFORMULARIO!NOMEDOSUBFORMULARIO.Form.RecordSource = gstrRecordSourceOriginal
        'Forms!NOMEDOFORMULARIO!NOMEDOSUBFORMULARIO.Requery
        
        Forms!PRG!PRGSUB.Form.RecordSource = gstrRecordSourceOriginal
        Forms!PRG!PRGSUB.Requery
        
        Dim frmFormulario As Form
        Dim ctlsControlesDoFormulario As Control
        Dim varNomeControle As String

        Set frmFormulario = Screen.ActiveForm
            
            'Verifica se o RecordSource do SUBformulário é uma instrução SQL
            'ou uma tabela/consulta
        Dim strRecordSourceDoSubformulario As String 'Variável para o RecordSource
        Dim strNomeDaTabela As String 'Variável para o nome da tabela
        
            'Define a variável para o RecordSource do subformulário
        strRecordSourceDoSubformulario = gstrRecordSourceOriginal

            'Verifica se a variável possui a string "Select" (ou seja, se é uma
            'instrução SQL
            
            'Se for instrução SQL, pega a parte da instrução referente ao nome da Tabela
        If InStr(1, strRecordSourceDoSubformulario, "Select") <> 0 Then
            strNomeDaTabela = Mid(strRecordSourceDoSubformulario, 8, (InStr(1, strRecordSourceDoSubformulario, ".") - 8))
            
            'Caso contrário, pega o nome da tabela
        Else
            strNomeDaTabela = strRecordSourceDoSubformulario
                    
        End If

            
            'Reinicia o rowsource das caixas de cominação, limpa os campos
            'e habilita os controles
            
        For Each ctlsControlesDoFormulario In frmFormulario.Controls
            If Mid(ctlsControlesDoFormulario.Name, 1, 2) = "fm" Then
                varNomeControle = ctlsControlesDoFormulario.Name
                ctlsControlesDoFormulario.Value = ""
                
                rsoSQL = "" & _
                "SELECT " & strNomeDaTabela & "." & Mid(varNomeControle, 3, (Len(varNomeControle) - 2)) & " " & _
                "FROM CONSPR " & _
                "GROUP BY " & Mid(varNomeControle, 3, (Len(varNomeControle) - 2)) & " " & _
                "ORDER BY " & Mid(varNomeControle, 3, (Len(varNomeControle) - 2))
                        
                Me(varNomeControle).Enabled = True
                Me(varNomeControle).RowSource = rsoSQL
                Me(varNomeControle).Requery
                
            End If
        Next
        
            'Reinicia as variávels globais
        gstrFiltroAcumulado = ""
        gstrGroup = ""
        
        
      

    End Sub


    Quero que ao remover os filtros, o Relatório gerado mostre todos os registros, sem filtragem.

    Desde já, agradeço a ajudas dos amigos!!
    avatar
    ictsp
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 222
    Registrado : 02/09/2016

    [Resolvido]Remover filtro formulário Empty Re: [Resolvido]Remover filtro formulário

    Mensagem  ictsp 28/3/2017, 11:54

    Bom dia amigos! Depois de muita pesquisa e horas a fio estudando, consegui resolver o problema.

    No final do código do botão "RemoverFiltro", acrescentei uma linha:

    'Reinicia as variávels globais
    gstrFiltroAcumulado = ""
    gstrGroup = ""
    me.filter = ""

    Agora, quando o usuário remove a filtragem feita no form e clica no botão Relatório, aparecem todos os registros.
    Coisa simples, mas pra quem nunca fez dá um trabalho ..kkkkk

    Valeu!!

      Data/hora atual: 7/5/2024, 06:57