Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou querendo fazer um código que ele verifica se eu digitei no campo CPF, Cliente ou Cidade para fazer a consulta no banco de dados.
Tentei fazer mais ou menos assim.
Criei 3 funções. Para verificar em qual campo digitei.
Public Function ConsultaPorCPF() As Boolean
If frmConsulta.txtCPF = "" Then
ConsultaPorCPF = False
Else
ConsultaPorCPF = True
End If
End Function
Public Function Consulta---ome() As Boolean
If frmConsulta.txtCliente = "" Then
ConsultaPorCLiente = False
Else
ConsultaPorCLiente = True
End If
End Function
Public Function ConsultaPorCidade() As Boolean
If frmConsulta.txtCidade = "" Then
ConsultaPorCidade = False
Else
ConsultaPorCidade = True
End If
End Function
E o código para consultar foi esse:
Abre_Conexao
If ConsultaPorCPF = True Then
SQL = "Select * from CadClientes where CPF = '" & txtCPF.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
cmdConsultar.Enabled = False
cmdProximo.Enabled = True
cmdAnterior.Enabled = True
cmdOrdem.Enabled = True
txtCPF.Enabled = False
Else
MsgBox "Cliente não Cadastrado!", vbInformation, "Consulta"
End If
Else
If Consulta---ome = True Then
SQL = "Select * from CadClientes where Cliente = '" & txtCliente.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
cmdConsultar.Enabled = False
cmdProximo.Enabled = True
cmdAnterior.Enabled = True
cmdOrdem.Enabled = True
txtCPF.Enabled = False
Else
MsgBox "Cliente não Cadastrado!", vbInformation, "Consulta"
End If
Else
If ConsultaPorCidade = True Then
SQL = "Select * from CadClientes where Cidade = '" & txtCidade.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
cmdConsultar.Enabled = False
cmdProximo.Enabled = True
cmdAnterior.Enabled = True
cmdOrdem.Enabled = True
txtCPF.Enabled = False
Else
MsgBox "Cliente não Cadastrado!", vbInformation, "Consulta"
End If
Else
MsgBox "Informe os dados para a consulta!", vbInformation, "Consulta"
End If
End If
End IfSó que quando eu digito o CPF funciona normal, mas quando eu faço a consulta pelo Cliente ou pela Cidade, não da certo cai direto na msgbox Informe os dados para a consulta.
Alguém sabe como fazer para essa estrutura funcionar?
Deu bem certinho o que eu queria ai esta o código para quem quiser usar.
Muito Obrigado pela ajuda.
Private Sub cmdConsultar_Click()
Abre_Conexao
SQL = "Select * from CadClientes where 1=1"
If txtCPF.Text <> "" Then
SQL = SQL & " and CPF = '" & txtCPF.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
AbilitaBotaoConsulta
Else
MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
End If
ElseIf txtCliente.Text <> "" Then
SQL = SQL & " and Cliente = '" & txtCliente.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
AbilitaBotaoConsulta
Else
MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
End If
ElseIf txtCidade.Text <> "" Then
SQL = SQL & " and Cidade = '" & txtCidade.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
AbilitaBotaoConsulta
Else
MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
End If
Else
MsgBox "Informe os dados para a consulta!", vbInformation, "Consulta"
End IfOutra coisa que quero aproveitar para pedir.
Fiz uma DataGrid também conectando via o ADODC.
Queria mudar a pesquisa na tabela conforme o SQL que for executado na estrutura acima.
Sei que é na propriedade RecordSource. Só que via código não esta executando. Tem um jeito específico para fazer isso via código
Como assim? Não entendi a dúvida.
Assim como a gente muda uma textbox digitando txtnome.Text
Queria mudar o comando SQL do ADODC pelo que eu imagino seja, ADOCD.RecordSource = SQL
Porem pra mim não ta funcionando. Também da erro quando coloco where e Order.
Não sei se tem que ser em algum lugar específico para por esse código.
Por exemplo nesse código, onde eu colocaria o ADOCD.RecordSource = SQL para o DataGrid fazer a mesma pesquisa dos campos.
Abre_Conexao
SQL = "Select * from CadClientes where 1=1"
If txtCPF.Text <> "" Then
SQL = SQL & " and CPF = '" & txtCPF.Text & "'"
Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
If Not Tabela.EOF Then
PreencheDadosConsulta
AbilitaBotaoConsulta
Else
MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"Basta você alterar a String SQL que você criou para alterar o comando que você está dando na tabela, e o where não funciona porque não está na sintaxe correta:
Isso não existe: where 1=1
A não ser que o nome da sua coluna seja "1", caso contrário a tag seria: WHERE <coluna> = <valor>
Bom, eu dei uma limpada no seu código, você estava usando if's demais, talvez você tenha se confundido em alguns deles, use:
ElseIf <Condição>
No lugar de
Else
If <condição>
Porque ai você teria que fechar cada if dentro do escopo, e isto tira um pouco o desempenho da aplicação.
As funções que você criou para verificar não são necessárias também, porque você está simplesmente verificando se a caixa de texto está vazia, então se você quiser pode deletá-las.
Veja se este código funciona:
Abre_Conexao
If ConsultaPorCPF = True Then
End Sub