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.
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.