Bom dia Tauron,
Como prometido, retorno ao fórum para agradecer e postar logo mais a abaixo a solução encontrada e que está funcionando como queria...
Peço que me tire mais uma dúvida:
Tenho uma combo cboCidade e ao salvar, está salvando com o número 3637... Você já viu esse tipo de erro no access? Pode me ajudar?
Nessa combo, quando seleciono, ela já puxa as informações dos campos: IBGE, CEP, UF
As informações de Colunas e larguras de colunas, Origem da linha, estão também na tabela no campo Cidade...
É que não me lembro como resolvi uma vez esse problema...
Desde já agradeço sua atenção...
Segue código da Pesquisa:
Pesquisar no próprio form em mais de um campo na caixa de Listgem
Criar no form a combox: cboOpcao
N de colunas: 2
Larg colunas: 0cm;1cm
Origem da linha:
"0";"Contém";"1";"É diferente";"2";"Começa com";"3";"Termina com";"4";"Igual"
Tipo de origem: Lista de valores
Crie caixas de texto conform necessidade para pesquisa... No meu caso criei duas, txt01 e txt02
Crie também os botões: cmdPesquisar e cmdRemover
Crie uma caixa de listagem (Caixa de texto com nome "Lista")
Colunas: O número de colunas que você quer exibir na pesquisa.
Larg colunas: Sempre observar os tamanho para exibição das informações... Sempre ativo como SIM o Cabeçalho das Colunas.
Na Origem da linha: SELECT tblCadClientes.CodCliente, tblCadClientes.Cliente, tblCadClientes.DtAniversário, tblCadClientes.CPFouCNPJ, tblCadClientes.Cidade FROM tblCadClientes;
Tipo: tabela/Consulta
Ao Receber foco
Private Sub Lista_GotFocus()
Me!Lista.Value = -1
End Sub
Agora vamos aos campos:
No Ao Alterar de cada campo cole:
Private Sub txt01_Change()
Call fncFiltrar(Me!txt1.Name)
End Sub
Private Sub txt02_Change()
Call fncFiltrar(Me!txt2.Name)
End Sub
Agora vamos para o botões:
No Ao clicar do botão cmdPesquisa
Private Sub cmdPesquisar_Click()
Call fncFiltrar 'Chamo a função
Me.txt01 = ""
Me.txt02 = ""
Me.cboOpcao.SetFocus
End Sub
No Ao clicar do cmdRemover
Private Sub cmdRemover_Click()
Me.RecordSource = ""
Me.Cliente.ControlSource = ""
Me.CPFouCNPJ.ControlSource = ""
Me.cboOpcao.SetFocus
End Sub
Função fncFiltrar ' Favor não retirar os direitos autorais...
'----------------------------------------------------------------------------
'Aqui é construido o Filtro a medida que se insere dados nas Caixas de Texto
'Criado por FabioPaes
'Em 03/01/2017
'----------------------------------------------------------------------------
Public Function fncFiltrar()
Dim F As String
Select Case Me.cboOpcao
Case 0 'Contém * Texto *
If Nz(Len(Me.txt01), 0) > 0 Then
F = "Cliente Like '*" & Me.txt01 & "*' AND "
End If
If Nz(Len(Me.txt02), 0) > 0 Then
F = F & "CPFouCNPJ Like '*" & Me.txt02 & "*' AND "
End If
Case 1 'É Diferente <>
If Nz(Len(Me.txt01), 0) > 0 Then
F = "Cliente <> '" & Me.txt01 & "' AND "
End If
If Nz(Len(Me.txt02), 0) > 0 Then
F = F & "CPFouCNPJ <> '" & Me.txt02 & "' AND "
End If
Case 2 'Começa com Texto *
If Nz(Len(Me.txt01), 0) > 0 Then
F = "Cliente Like '" & Me.txt01 & "*' AND "
End If
If Nz(Len(Me.txt02), 0) > 0 Then
F = F & "CPFouCNPJ Like '" & Me.txt02 & "*' AND "
End If
Case 3 'Termina com * Texto
If Nz(Len(Me.txt01), 0) > 0 Then
F = "Cliente Like '*" & Me.txt01 & "' AND "
End If
If Nz(Len(Me.txt02), 0) > 0 Then
F = F & "CPFouCNPJ Like '*" & Me.txt02 & "' AND "
End If
Case 4 'É Igual
If Nz(Len(Me.txt01), 0) > 0 Then
F = "Cliente = '" & Me.txt01 & "' AND "
End If
If Nz(Len(Me.txt02), 0) > 0 Then
F = F & "CPFouCNPJ = '" & Me.txt02 & "' AND "
End If
Case Else
MsgBox "Opção não configurada, por favor seleciona uma das Opções a seguir...", vbCritical, "Atenção!!!"
Me.cboOpcao.SetFocus
Me.cboOpcao.Dropdown
Exit Function
End Select
If Nz(Len(F), 0) > 0 Then 'Se Tiver alguma coisa a na variavel F, eu irei remover os ultimos 5 Caracteres que corresponde a: " AND " do ultimo filtro
F = left(F, Len(F) - 5)
Me.RecordSource = "SELECT * FROM tblCadClientes WHERE " & F 'Aplico ao formulario o resultado da consulta como sendo a origem dos dados
Me.Cliente.ControlSource = "Cliente" 'Aplico cada campo da consulta nas suas respectivas caixas de Texto
Me.txtCPFouCNPJ.ControlSource = "CPFouCNPJ"
MsgBox "Pesquisa Terminada!!!", vbInformation, "Atenção"
Else
MsgBox "Deve informar Pelo menos um Dado para realizar a Pesquisa", vbInformation, "Atenção!!!"
End If
End Function
Copie e cole a função dentro do VBA
Public Function TodosAcentos(pstrPlain As String) As String
Const cAlphabet _
= "aáàâäãå¦" _
& "cç¦" _
& "dð¦" _
& "eéèêë¦" _
& "f?¦" _
& "iíìîï¦" _
& "nñ¦" _
& "oóòôöõø¦" _
& "saߦ" _
& "uúùûü¦" _
& "yýÿ¦" _
& "z~"
Dim strAcc() As String
Dim strLike As String
Dim intN As Integer
Dim strP As Integer
Dim strC As String
strAcc = Split(cAlphabet, "¦")
For strP = 1 To Len(pstrPlain)
strC = Mid$(pstrPlain, strP, 1)
For intN = LBound(strAcc) To UBound(strAcc)
If InStr(strAcc(intN), strC) <> 0 Then
strC = "[" & strAcc(intN) & "]"
Exit For
End If
Next intN
strLike = strLike & strC
Next strP
TodosAcentos = strLike
End Function
OBS: Ao selecionar a opção na caixa de combinação, digitando a informação a ser exibida, basta clicar no botão cmdPesquisar para que o registro seja aberto...
O código foi desenvolvido pelo companheiro Fábio Paes - www.maximoaccess.com