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]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.
    avatar
    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 
    avatar
    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.
    avatar
    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.
    avatar
    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 13 Dez 2017, 09:23