Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beavis440

[Resolvido] Consulta

Recommended Posts

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 If
End Sub

 

Só 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

           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					

       ElseIf Not txtCliente.Text = "" 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

           ElseIf Not txtCidade.Text = "" 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 Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 If
End Sub

 

Outra 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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"

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.