Olá pessoal, tenho encontrado muitos recursos no fórum, mas estou com um problema que não estou visualizando a solução.
Tenho um formulário, com 8 campos, esse formulário é de consulta. Todos os campos podem ser critérios para essa consulta e posso utilizar carácter coringa "*".
Montei um código, não dos melhores, mas funciona. O problema é que ele funciona uma unica vez, quando rodo a consulta pelo segunda vez ele trava o access.
Não sei o que fazer. e puderem me ajudar agradeço. Segue o código:
Private Sub bt_PESQUISAR_Click()
Dim rs As dao.Recordset
Dim db As dao.Database
Dim SQL As String
Dim aux_CAMPO_NULL As Boolean
Me.Refresh
SendKeys "{F2}"
aux_CAMPO_NULL = False
'*******************************************
' Verifica os critérios da pesquisa.
'*******************************************
If IsNull(Me.txtb_cod_CRITERIO) And IsNull(Me.txtb_DENOM_CRITERIO) And IsNull(Me.cmbb_TIPO_CRITERIO) And IsNull(Me.cmbb_UNID_MED_CRITERIO) And IsNull(Me.txtb_NUM_CASAS_DEC) And Me.chk_PREENCHIMENTO_AUTOMATICO = 0 And IsNull(Me.txtb_Tabela_Preench_autom) And IsNull(Me.txtb_Campo_Preench_autom) Then
MsgBox "Favor informar ao menos um critério para pesquisa.", vbInformation, "Aviso"
Me.txtb_cod_CRITERIO.SetFocus
Exit Sub
End If
'*******************************************
' Identifica os critérios da pesquisa.
'*******************************************
SQL = "SELECT * FROM cns_CRITER_METOD WHERE"
If Not IsNull(Me.txtb_cod_CRITERIO) Then
SQL = SQL & " cod_CRITERIO like '" & Me.txtb_cod_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
If Not IsNull(Me.txtb_DENOM_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and DENOM_CRITERIO like '" & Me.txtb_DENOM_CRITERIO & "'"
Else
SQL = SQL & " DENOM_CRITERIO like '" & Me.txtb_DENOM_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.cmbb_TIPO_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and TIPO_CRITERIO like '" & Me.cmbb_TIPO_CRITERIO & "'"
Else
SQL = SQL & " TIPO_CRITERIO like '" & Me.cmbb_TIPO_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.cmbb_UNID_MED_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and UNID_MED_CRITERIO like '" & Me.cmbb_UNID_MED_CRITERIO & "'"
Else
SQL = SQL & " UNID_MED_CRITERIO like '" & Me.cmbb_UNID_MED_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_NUM_CASAS_DEC) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and NUM_CASAS_DEC like " & Me.txtb_NUM_CASAS_DEC
Else
SQL = SQL & " NUM_CASAS_DEC like " & Me.txtb_NUM_CASAS_DEC
aux_CAMPO_NULL = True
End If
ElseIf Me.chk_PREENCHIMENTO_AUTOMATICO = 1 Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and PREENCHIMENTO_AUTOMATICO like " & Me.chk_PREENCHIMENTO_AUTOMATICO
Else
SQL = SQL & " PREENCHIMENTO_AUTOMATICO like " & Me.chk_PREENCHIMENTO_AUTOMATICO
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_Tabela_Preench_autom) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and TABELA_PREENCH_AUTOM like '" & Me.txtb_Tabela_Preench_autom & "'"
Else
SQL = SQL & " TABELA_PREENCH_AUTOM like '" & Me.txtb_Tabela_Preench_autom & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_Campo_Preench_autom) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and CAMPO_PREENCH_AUTOM like '" & Me.txtb_Campo_Preench_autom & "'"
Else
SQL = SQL & " CAMPO_PREENCH_AUTOM like '" & Me.txtb_Campo_Preench_autom & "'"
aux_CAMPO_NULL = True
End If
End If
set db = CurrentDb()
Set rs = db.OpenRecordset(SQL, dbOpenDynaset)
Set Form_frm_pesq_CRITERIOS_METODOLOGIA.sub_frm_CRITERIOS_METODOLOGIA.Form.Recordset = rs
Me.sub_frm_CRITERIOS_METODOLOGIA.Form.Requery
End Sub
Obrigado pela oportunidade de participar.
Tenho um formulário, com 8 campos, esse formulário é de consulta. Todos os campos podem ser critérios para essa consulta e posso utilizar carácter coringa "*".
Montei um código, não dos melhores, mas funciona. O problema é que ele funciona uma unica vez, quando rodo a consulta pelo segunda vez ele trava o access.
Não sei o que fazer. e puderem me ajudar agradeço. Segue o código:
Private Sub bt_PESQUISAR_Click()
Dim rs As dao.Recordset
Dim db As dao.Database
Dim SQL As String
Dim aux_CAMPO_NULL As Boolean
Me.Refresh
SendKeys "{F2}"
aux_CAMPO_NULL = False
'*******************************************
' Verifica os critérios da pesquisa.
'*******************************************
If IsNull(Me.txtb_cod_CRITERIO) And IsNull(Me.txtb_DENOM_CRITERIO) And IsNull(Me.cmbb_TIPO_CRITERIO) And IsNull(Me.cmbb_UNID_MED_CRITERIO) And IsNull(Me.txtb_NUM_CASAS_DEC) And Me.chk_PREENCHIMENTO_AUTOMATICO = 0 And IsNull(Me.txtb_Tabela_Preench_autom) And IsNull(Me.txtb_Campo_Preench_autom) Then
MsgBox "Favor informar ao menos um critério para pesquisa.", vbInformation, "Aviso"
Me.txtb_cod_CRITERIO.SetFocus
Exit Sub
End If
'*******************************************
' Identifica os critérios da pesquisa.
'*******************************************
SQL = "SELECT * FROM cns_CRITER_METOD WHERE"
If Not IsNull(Me.txtb_cod_CRITERIO) Then
SQL = SQL & " cod_CRITERIO like '" & Me.txtb_cod_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
If Not IsNull(Me.txtb_DENOM_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and DENOM_CRITERIO like '" & Me.txtb_DENOM_CRITERIO & "'"
Else
SQL = SQL & " DENOM_CRITERIO like '" & Me.txtb_DENOM_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.cmbb_TIPO_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and TIPO_CRITERIO like '" & Me.cmbb_TIPO_CRITERIO & "'"
Else
SQL = SQL & " TIPO_CRITERIO like '" & Me.cmbb_TIPO_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.cmbb_UNID_MED_CRITERIO) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and UNID_MED_CRITERIO like '" & Me.cmbb_UNID_MED_CRITERIO & "'"
Else
SQL = SQL & " UNID_MED_CRITERIO like '" & Me.cmbb_UNID_MED_CRITERIO & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_NUM_CASAS_DEC) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and NUM_CASAS_DEC like " & Me.txtb_NUM_CASAS_DEC
Else
SQL = SQL & " NUM_CASAS_DEC like " & Me.txtb_NUM_CASAS_DEC
aux_CAMPO_NULL = True
End If
ElseIf Me.chk_PREENCHIMENTO_AUTOMATICO = 1 Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and PREENCHIMENTO_AUTOMATICO like " & Me.chk_PREENCHIMENTO_AUTOMATICO
Else
SQL = SQL & " PREENCHIMENTO_AUTOMATICO like " & Me.chk_PREENCHIMENTO_AUTOMATICO
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_Tabela_Preench_autom) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and TABELA_PREENCH_AUTOM like '" & Me.txtb_Tabela_Preench_autom & "'"
Else
SQL = SQL & " TABELA_PREENCH_AUTOM like '" & Me.txtb_Tabela_Preench_autom & "'"
aux_CAMPO_NULL = True
End If
ElseIf Not IsNull(Me.txtb_Campo_Preench_autom) Then
If aux_CAMPO_NULL = True Then
SQL = SQL & " and CAMPO_PREENCH_AUTOM like '" & Me.txtb_Campo_Preench_autom & "'"
Else
SQL = SQL & " CAMPO_PREENCH_AUTOM like '" & Me.txtb_Campo_Preench_autom & "'"
aux_CAMPO_NULL = True
End If
End If
set db = CurrentDb()
Set rs = db.OpenRecordset(SQL, dbOpenDynaset)
Set Form_frm_pesq_CRITERIOS_METODOLOGIA.sub_frm_CRITERIOS_METODOLOGIA.Form.Recordset = rs
Me.sub_frm_CRITERIOS_METODOLOGIA.Form.Requery
End Sub
Obrigado pela oportunidade de participar.