fabricio, isso é uma pergunta ? Voce quer dizer a rotina
MontaClausulaWhere do form Pesquisa ?
Cassio,
voce usou a clausula where
Se sim, segue a adaptação que fiz com rotina
MontaClausulaWhere para se localizar entre Datas adicionando um CheckBox e um Case com a cláusula
BETWEEN conforme dica do Tomas ficando assim :
Na Declaração coloquei :
Private LocEntreDatas As Long
No Botão Filtrar defini a variavel LocEntreDatas:
Código: Selecionar todos
Private Sub cmbFiltrar_Click()
If chkEntreDatas.Value = True Then
LocEntreDatas = 1
Else
LocEntreDatas = 0
End If
Call PopulaListBox(txtDtIniP.Text, txtDtFimP.Text, txtProtocP.Text, txtEndP.Text, txtSolicitP.Text, txtServP.Text, txtRgDisinP.Text, txtNRgDsP.Text)
End Sub
Criei um ChkBox :
Código: Selecionar todos
Private Sub chkEntreDatas_Click()
If chkEntreDatas.Value = True Then
cboOrdenarPor.Value = "DATA" 'Forçar classificação por Data
Else
cboOrdenarPor.Value = ""
End If
End Sub
E na rotina coloquei um Case :
Código: Selecionar todos
Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String)
If Trim(Me.Controls(NomeControle).Text) <> vbNullString Then
If sqlWhere <> vbNullString Then
sqlWhere = sqlWhere & " AND"
End If
If IsDate(Me.Controls(NomeControle).Text) Then 'Verifica se é Data
Select Case LocEntreDatas
Case 0 'Procura por uma unica Data
sqlWhere = sqlWhere & " (" & NomeCampo & ") = #" & Format(txtDtIniP, "m/d/yyyy") & "#"
Case 1 'Procura entre duas Datas
sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(txtDtIniP, "mm/dd/yyyy") & "# AND #" & Format(txtDtFimP, "mm/dd/yyyy") & "#"
End Select
Else
sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('%" & Trim(Me.Controls(NomeControle).Text) & "%')"
End If
End If
End Sub
Nas rotinas abaixo alterei:
Na rotina PopulaListBox usei a chamada a Função RecordSet
Set rst = RecordSet(DataInicio, DataFim, Protocolo, Endereco, Solicitante, Servico, RegiaoDisin, NumRgDisin)
Na Function RecordSet acrescentei :
Call MontaClausulaWhere(txtDtIniP.Name, "DATA", sqlWhere)
Está meio grosseiro, falta um pouco mais de estudo em cima para melhorar, mas pelos meus conhecimentos em SQL acho que já melhorei bastante, e comecei a entender um pouco mais as Clausulas, nas adaptações estão com os nomes dos controles que estou usando, seria só o caso de adaptar de acordo com os seus.
Estou quase finalizando essas adaptações do Form Pesquisa para a finalidade que preciso, e assim que terminar coloco um exemplo aqui no Forun, veja se essas dicas ajudam, qq duvida poste novamente.
[]s