MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Controlar filtro a partir de outro formulário

    Compartilhe

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 14:28

    Olá pessoal, mais uma dúvida. Tenho dois formulários, um de busca e outro de gerenciamento de registros. O de busca possui uma textbox que, a partir da digitação do usuário, filtra os registros carregados em uma listbox. Tudo funciona perfeitamente, com o seguinte código:

    Private Sub COMBO_ASSUNTO_Change()

       Dim strText, strFind

       strText = Me.COMBO_ASSUNTO.Text

       If Len(Trim(strText)) > 0 Then
           Me.ROTULO_NULL.Visible = False
           'cria critério
           strFind = "REG_ENTRADA.ASSUNTO Like '"
           For i = 1 To Len(Trim(strText))
               If (Right(strFind, 1) = "*") Then
                   strFind = Left(strFind, Len(strFind) - 1)
               End If
               strFind = strFind & "*" & Mid(strText, i, 1) & "*"
           Next
           strFind = strFind & "'"
       
           strSQL = "SELECT REG_ENTRADA.INDEX, REG_ENTRADA.[TIPO_DOC] & '-' & [REF] & '/' & [ANO] AS REFERÊNCIA, REG_ENTRADA.CLASSE, REG_ENTRADA.ASSUNTO, REG_ENTRADA.DATA_ANALISTA, REG_ENTRADA.SUBSIDIO FROM REG_ENTRADA WHERE " & strFind & " ORDER BY REG_ENTRADA.DATA_ANALISTA;"
           
           Me.LISTA_DOC.RowSource = strSQL
       
       Else
           Me.ROTULO_NULL.Visible = True

           ' Mostra tudo (sem critério)
           strSQL = "SELECT REG_ENTRADA.INDEX, REG_ENTRADA.[TIPO_DOC] & '-' & [REF] & '/' & [ANO] AS REFERÊNCIA, REG_ENTRADA.CLASSE, REG_ENTRADA.ASSUNTO, REG_ENTRADA.DATA_ANALISTA, REG_ENTRADA.SUBSIDIO FROM REG_ENTRADA ORDER BY REG_ENTRADA.DATA_ANALISTA;"
           Me.LISTA_DOC.RowSource = strSQL
       End If

       Me.LISTA_DOC.Requery
    End Sub


    A partir deste filtro inicial, o usuário, ao clicar em uma linha da listbox (que representa um registro), ou seja, ao escolher o registro que procura, abre-se o segundo formulário, de gerenciamento, usando como referência a linha selecionada para alimentar o combobox que funciona como filtro no segundo formulário (selecionando o registro escolhido). O código é este:

    Private Sub BUT_ABRIR_Click()
       If IsNull(Me.LISTA_DOC) Or Trim(Me.LISTA_DOC) = "" Then
           MsgBox "Você não selecionou nenhum documento!", vbExclamation
       Else
           DoCmd.OpenForm "F_REG_FASE1_GESTAO"
               
           Forms!F_REG_FASE1_GESTAO.COMBO_CF.Value = Null
           Forms!F_REG_FASE1_GESTAO.COMBO_CF.Value = Trim(Me.LISTA_DOC.Column(1))
           Forms("F_REG_FASE1_GESTAO").COMBO_CF_AfterUpdate  'Aqui roda-se o procedimento para a atualização das páginas segundo o registro selecionado
         
           DoCmd.Close acForm, "F_PESQ_ASSUNTO", acSaveNo
       End If
    End Sub

    Tudo funciona bem. O segundo formulário é aberto, o combobox é alimentado, mas a filtragem não ocorre. Para isso, tenho que clicar no combo e apertar 'enter', para que de fato ele rode a atualização dos dados no formulário. Onde é que estou errando? Tem como eu garantir que o procedimento de atualização (Forms("F_REG_FASE1_GESTAO").COMBO_CF_AfterUpdate) seja de fato executado, por meio de VBA? Help!

    Obrigado, pessoal.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  rdrck em Sex 04 Abr 2014, 15:35

    Olá Borba,

    Forms("F_REG_FASE1_GESTAO").COMBO_CF_AfterUpdate.

    Já tentou Ao Entrar (Enter) ou Ao Receber Foco (GotFocus) da combo?


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 15:42

    Como assim? Você está sugerindo que eu execute a rotina de atualização dos dados nos eventos "Ao entrar" e/ou "Ao receber foco"? Se for isso, já tentei, e a coisa não funciona. Tentando ser mais claro em meu problema, o que ocorre é que tenho dois formulários que têm comboboxes como seletores de registro. O que quero é que quando um registro for selecionado em um dos formulários, abra-se o segundo, alimentando seu respectivo combobox de seleção de registro. A alimentação está acontecendo, mas a filtragem respectiva não ocorre de forma automática, tendo o usuário que selecionar o combobox de seleção e apertar o 'enter'. Somente após isso o formulário é atualizado tendo como referência o critério do combobox. Não sei porque isso está ocorrendo.  Crying or Very sad 

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  rdrck em Sex 04 Abr 2014, 15:51

    Já tentou no evento No Timer do 2º formulário?

    No Timer: Código.
    Intervalo do Cronômetro: 1000 (equivale a 1 segundo).


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 16:01

    Será que isso seria uma alternativa? Vai pesar demais. Em vez de eu atualizar o formulário somente em sua abertura, segundo o critério do combobox seletor de registro, eu estaria atualizando ele toda hora! A tela vai ficar piscando e ainda poderia ter um problema com a integridade dos dados, uma vez que a atualização poderia ocorrer simultaneamente à entrada de novos dados. De qualquer forma, tentei aqui e não funcionou. A tela ficou piscando com o primeiro registro aberto, sem considerar o critério do combobox. Ainda não achamos a solução.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  rdrck em Sex 04 Abr 2014, 16:08

    Ao Carregar ou Ao Abrir do 2º form.
    Talvez Ao filtrar ou Ao Aplicar Filtro do 2º form.
    Na verdade tem que se pensar se o melhor é utilizar o form ou a combo para configurar o evento.


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 18:09

    No "Ao carregar" ou no "Ao abrir" também não funciona, posto que preciso abrir/carregar o formulário antes de informar o valor do combobox de seleção de registro (filtro). Repare que, se eu abro o 2º formulário normalmente, o combobox de seleção de registro está funcionando normalmente. Ou seja, é como se, ao abri-lo por meio do primeiro formulário, o Access não reconhecesse o seu preenchimento por VBA! Muito estranho.

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 18:32

    A-ha! Resolvi aqui. O que tive que fazer foi, rodar, a partir do primeiro formulário, uma pesquisa pelo índice do segundo, fazendo um clone do recordset deste último. Ficou assim:

    Private Sub BUT_ABRIR_Click()
       If IsNull(Me.LISTA_DOC) Or Trim(Me.LISTA_DOC) = "" Then
           MsgBox "Você não selecionou nenhum documento!", vbExclamation
       Else
           DoCmd.OpenForm "F_REG_FASE1_GESTAO"
           
    Forms!F_REG_FASE1_GESTAO.COMBO_CF.Value = Trim(Me.LISTA_DOC.Column(1))
           
    Dim rs As Object
       
           Set rs = Forms!F_REG_FASE1_GESTAO.Recordset.Clone
           rs.FindFirst "[INDEX] = " & Str(Nz(Forms!F_REG_FASE1_GESTAO.COMBO_CF.Column(4), 0))
           If Not rs.EOF Then Forms!F_REG_FASE1_GESTAO.Bookmark = rs.Bookmark
                 
           Forms!F_REG_FASE1_GESTAO.DET_DOC
           
           DoCmd.Close acForm, "F_PESQ_ASSUNTO", acSaveNo
       End If
    End Sub


    Obrigado pela ajuda, RDRCK!

    Quincasborba
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 14/08/2013

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  Quincasborba em Sex 04 Abr 2014, 18:35

    A propósito, o objeto DET_DOC referido no código, é uma função que atualiza a tela. (só pra quem não entendeu) hehe.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Controlar filtro a partir de outro formulário

    Mensagem  rdrck em Dom 06 Abr 2014, 13:32

    Que bom que deu certo.
    Sucesso.
    Valeu.


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

      Data/hora atual: Qua 07 Dez 2016, 18:16