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:
Quero que ao remover os filtros, o Relatório gerado mostre todos os registros, sem filtragem.
Desde já, agradeço a ajudas dos amigos!!
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!!