Ir para conteúdo

Arquivado

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

Beavis440

Consulta por ADODC

Recommended Posts

Pessoal estou com problemas na consulta.

 

534472_462621417114210_1346678210_n.jpg

 

Tenho uma GridData conectada a uma ADODC juntamente com os campos, conforme mostra ai fiz uma consulta pelo nome de cidade Farroupilha. A consulta ocorreu normalmente, assim como se eu fizer consulta por nome ou CPF ocorre tudo certo como quero.

Porem se coloco um nome que não esta no banco de dados vem a MSG correta que coloquei de que dados não existem. Mas quando vou realizar uma nova consulta, mesmo eu digitando nos campo, vem a informação de como se eu não tivesse digitado nada no campo. Penso que isso ocorre por conta da pesquisa anterior não ter achado nada e dai ela não reconhece eu estar fazendo uma nova pesquisa.

Gostaria de saber se tem como da algum tipo de reset nas pesquisas que não acham informação para poder realizar uma nova consulta.

 

Caso seja problemas no código ai esta eles:

 

Public Sub AbilitaBotaoConsulta()
   frmConsulta.cmdConsultar.Enabled = False
   frmConsulta.cmdOrdem.Enabled = True
   frmConsulta.cmdNova.Enabled = True
   frmConsulta.cmdProximo.Enabled = True
   frmConsulta.cmdAnderior.Enabled = True
   frmConsulta.txtCliente.Enabled = False
   frmConsulta.txtCidade.Enabled = False
   frmConsulta.txtCPF.Enabled = False
End Sub

Public Sub ConsultaCPF()
   Dim CPF2 As String
   CPF2 = frmConsulta.txtCPF
   SQL = "Select * from CadClientes where CPF = '" & CPF2 & "'"
   frmConsulta.Dados.CommandType = adCmdText
   frmConsulta.Dados.RecordSource = SQL
   frmConsulta.Dados.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
       If Not Tabela.EOF Then
           AbilitaBotaoConsulta
       Else
           MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
       End If
End Sub

Public Sub ConsultaNome()
   Dim Cliente2 As String
   Cliente2 = frmConsulta.txtCliente
       SQL = "Select * from CadClientes where Cliente = '" & Cliente2 & "'"
   frmConsulta.Dados.CommandType = adCmdText
   frmConsulta.Dados.RecordSource = SQL
   frmConsulta.Dados.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
       If Not Tabela.EOF Then
           AbilitaBotaoConsulta
       Else
           MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
       End If
End Sub

Public Sub ConsultaCidade()
   Dim Cidade2 As String
   Cidade2 = frmConsulta.txtCidade
       SQL = "Select * from CadClientes where Cidade = '" & Cidade2 & "'"
   frmConsulta.Dados.CommandType = adCmdText
   frmConsulta.Dados.RecordSource = SQL
   frmConsulta.Dados.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
       If Not Tabela.EOF Then
           AbilitaBotaoConsulta
       Else
           MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
       End If
End Sub

Private Sub cmdConsultar_Click() 'Botão para realizar a consulta'
   Abre_Conexao
       If txtCPF.Text <> "" Then
           ConsultaCPF
       ElseIf txtCliente.Text <> "" Then
           ConsultaNome
       ElseIf txtCidade.Text <> "" Then
           ConsultaCidade
       Else
           MsgBox "Informe os dados para a consulta!", vbInformation, "Consulta"
       End If
End Sub

Private Sub cmdNova_Click() 'Botão para realizar uma nova consulta'
   LimpaConsulta
   txtCliente.Enabled = True
   txtCidade.Enabled = True
   txtCPF.Enabled = True
   cmdConsultar.Enabled = True
   cmdOrdem.Enabled = False
   cmdNova.Enabled = False
   cmdAnderior.Enabled = False
   frmConsulta.cmdProximo.Enabled = False
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

No final de cada consulta, limpe o datasource, ou o recordset que você está usando, veja com breakpoints se ele passa por todas as instruções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos não seu certo também. O VB não ta reconhecendo esse comando depois do Recordset e RecordSource.

Mas consegui do meu jeito aqui. Não sei se da pra melhorar.

Fiz uma Sub no módulo, para quando a consultar for de um cadastro que não exista, automaticamente ja gere uma nova consulta pegando todos os dados da tabela, com a única intensão de anular aquela consulta nula anterior, porem limpando os campos do formulário, dessa maneira consegui gerar novas consultar sem problemas nenhum.

 

Public Sub ResetConculta()
   SQL = "Select * from CadClientes"
   frmConsulta.Dados.CommandType = adCmdText
   frmConsulta.Dados.RecordSource = SQL
   frmConsulta.Dados.Refresh
   LimpaConsulta
End Sub

 

Como ficou no código da consulta.

 

Public Sub ConsultaNome()
   Dim Cliente2 As String
   Cliente2 = frmConsulta.txtCliente
       SQL = "Select * from CadClientes where Cliente = '" & Cliente2 & "'"
   frmConsulta.Dados.CommandType = adCmdText
   frmConsulta.Dados.RecordSource = SQL
   frmConsulta.Dados.Refresh
       Tabela.Open SQL, conexao, adOpenForwardOnly, adLockReadOnly
       If Not Tabela.EOF Then
           AbilitaBotaoConsulta
           frmConsulta.txtCliente.Enabled = False
           frmConsulta.txtCidade.Enabled = False
           frmConsulta.txtCPF.Enabled = False
       Else
           MsgBox "Não existe cadastro com essa informação!", vbInformation, "Consulta"
           ResetConculta
       End If
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia

 

Vendo sua duvida vi que voce precisa entender o significado de todas as palavras de uma linha do ADODC.

 

Existe um livro QUASE COMPLETO sobre ADODC E ACREDITE a cabeça esquenta mesmo!!!.

 

A solução que voce encontrou podera fazer seu programa ficar muito lento quando estiver com a base de dados muito grande.

 

Entre em contato para melhores esclarecimentos.

 

Estive varias vezes em PA pois programei o venda que rodou nos postos de gasolina da refinaria que existe aí.

 

Outra coisa: voce deve usar dados imaginarios para postar sua duvida na internet. Os seus são reais!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com um problema nos Textbox.

Conectei elas ao objeto ADODC através do DataSource e do DataField.

Windows 8 , vista e o 7 ele funciona certinho.

Mas fui instalar o programa no Windows acabou que as textbox não carregam os informações que são para puxar do banco de dados. O dataGrid funciona bem. Mas o textbox tem esse problema.

Alguém sabe o que pode ser isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa esqueci de por.

Então é o Windows XP.

Fui ver aqui na minha máquina que é Windows 8, onde criei o programa, o sistema é 64 bits.

Já no Windows XP é 32.

Não sei se isso faz alguma diferença. Mas enfim esse é o único problema para rodar perfeitamente o programa. Ele não acusa erro nenhum. Simplesmente não mostra os dados nas Textbox que estão conectadas ao controlador ADODC.

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.