Ir para conteúdo
Fórum Script Brasil
  • 0

Progrma De Consulta


raphael_suporte

Pergunta

Boa Tarde galera,

Bom é o seguinte, procurei na Net e no fórum e não achei a resposta que queria, é o seguinte, estou precisando criam uma form de consulta dentro de um projeto, onde ao digitar o telefone do cliente já me aparece o código e nome dele...

bom

criei um TxtBox e algumas Labels, queria que o digitado no fosse consultado e nas Labels aparecem a resposta...

criei o seguinte código

If TxtTel.Text <> "" Then strSQL = TxtTel.Text Else MsgBox "Digite Um Numero" '<--- Verifica se há numero digitado
      
     If Len(Trim$(TxtTel.Text)) = 8 Then  <- Verifica se o numero é valido
        Set rsProcura = objBanco.dbCONSULTA(gblDATA_SOURCE_NAME, "SELECT * FROM TABELA_Clientes WHERE TXT_TELEFONE = '" & TxtTel.Text & "")
     Else
        objIHM.ihmMOSTRA_ERRO "Numero Inválido."
        TxtTel.SetFocus
    End If   

       lblCod_Cliente.Caption = ("TXT_Codigo")
       lblNome.Caption = ("TXT_Cliente")

porem ele volta com o "TXT_Codigo_Cliente" e " TXT_Cliente", não o valor da tabela!!

Os campos na Tabela estão como varchar

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

hum acho q seria assim ó:

lblCod_Cliente.Caption = rsProcura("TXT_Codigo")
       lblNome.Caption = rsProcura("TXT_Cliente")[/code]

mas nota q você faz a consulta dentro dum if. e se ele não passar na consulta e tentar preencher pode dar erro. fora q a consulta pode não voltar nada, ai você teria q testar se não é EOF antes de preencher.

Link para o comentário
Compartilhar em outros sites

  • 0

então tenho que colocar a instrução dentro do if e colocar o teste EOF??

assim:

if Len(Trim$(TxtTel.Text)) = 8 Then
        Set rsProcura = objBanco.dbCONSULTA(gblDATA_SOURCE_NAME, "SELECT * FROM TABELA_Clientes WHERE TXT_Telefone = '" & TxtTel.Text & "")
          If rsProcura.EOF Then
              lblCod_Cliente.Caption = TXT_Codigo
              lblNome.Caption = TXT_Cliente
          Else: MsgBox "Número não encontrado"
         End If
    Else
        objIHM.ihmMOSTRA_ERRO "Numero Inválido."
        TxtTel.SetFocus
    End If

deu erro no EOF run time error 3704 " operation is not allowed when the object is close"

Link para o comentário
Compartilhar em outros sites

  • 0

eu já peguei esse projeto com 85% pronto, e só me pediram para criar alguns relatórios com o Crystall e fazer essa pesquisa, fui ver em outra área e percebi que tinha um outro tipo de pesquisa, parecido porem não o que eles precisavam, e nessa pesquisa eles usavam essas procedures, fiz um teste usando o um comando de pesquisa para inserir números em uma combo e funcionou...

cara resolvi o problema: alterei o codigo para o seguinte

if Len(Trim$(TxtTel.Text)) = 8 Then
        rsProcura.open "SELECT * FROM TABELA_Clientes WHERE TXT_Telefone = '" & TxtTel.Text & "'", CN, 1, 3
          If rsProcura.EOF Then
              lblCod_Cliente.Caption = TXT_Codigo
              lblNome.Caption = TXT_Cliente
          Else: MsgBox "Número não encontrado"
         End If
    Else
        objIHM.ihmMOSTRA_ERRO "Numero Inválido."
        TxtTel.SetFocus
    End If

obrigado pela ajuda da mesma forma

Link para o comentário
Compartilhar em outros sites

  • 0

bom olha eu aqui novamente, bom a parte da pesquisa com o numero ficou certo só que pediram para verificar também o DDD, ou seja, criar mais uma camada na pesquisa. Achei que ficaria assim a pesquisa.

If TxtTel.Text <> "" And txtDDD.Text <> "" Then
      If Len(Trim$(TxtTel.Text)) = 8 And Len(Trim$(txtDDD.Text)) = 2 Then
         rsProcura.Open "SELECT * FROM TABELA_Clientes WHERE TXT_DDD = '" & txtDDD.Text & " and TXT_Telefone = '" & TxtTel.Text & "'", CN, 1, 3
           If Not rsProcura.EOF Then
                    lblCod_Cliente.Caption = rsprocura("TXT_Codigo")
                    lblNome.Caption = rsProcura("Txt_Cliente")
            rsprocura.Close

porem não é

vem um erro:

Run-Tem error '-2147217900 (80040e10)':

Line 1: Incorrect syntax ner '(numero do telefone)'.

o que eu não fiz ou fiz errado?

Link para o comentário
Compartilhar em outros sites

  • 0
rs(Nome) = txtNome.text ( o banco será alterado e atualizado com a alteração apenas daquele campo?)

não imediatamente. você fazendo isso você vai alterar somente no recordset (q esta carregado na memoria, ou seja, não aponta mais diretamente ao banco). mas se você usar o metodo Update do RecordSet, ai sim ele atualiza o banco com os valores q ele possui atualmente, apesar q o metodo update pode não funcionar dependendo das permissoes q você setou ao abrir o RecordSet.

Link para o comentário
Compartilhar em outros sites

  • 0

e no caso eu teria como alterar apenas um campo da tabela? o teria que alterar todos os campos? tipo salvar todos os campos em um vetor, e depois, alterar a o campo deseja, para depois jogar os campos do vetor na tabela?

ou há uma forma de fazer isso de forma mais rápida e eficiente?

Link para o comentário
Compartilhar em outros sites

  • 0

na verdade, assim q você faz o select, todos os campos do RecordSet vao estar com os valores do registro do banco, entende??

o metodo Update do RecordSet não faz nada mas do q substituir os dados do registro atual (o registro no BANCO DE DADOS a q o RecordSet aponta no momento) pelos dados q ele (o RecordSet) possui atualmente (pra cada campo).

assim, se você fizer o select, não alterar nd e imediatamente chamar o metodo Update, ele atualizara o registro pelos valores atuais (ou seja, os mesmos), ou seja vai trocar o valor de cada campo pelo valor dele mesmo ficando, assim, exatamente a mesma coisa q estava antes do select.

seguindo esse raciocinio, se você trocar apenas um campo (usando o codigo rs(Nome) = txtNome.text), depois do Update, ele vai substituir o valor desse campo pelo valor novo atribuido. e os demais campos vao ser substituidos pelo proprio valor deles mesmos (já q, se você não alterou via codigo, são esses os valores q o RecordSet possui), ou seja, vao permanecer inalterados.

deu pra entender?? só não sei se era bem isso q você queria saber mas foi isso q entendi pela pergunta mas qualquer coisa posta ae...

mas normalmente não faco update assim, faco por query mesmo (tipo "Update Tabela Set Campo1 = valor1, Campo2 = valor2 Where Codigo = valorcod")

Link para o comentário
Compartilhar em outros sites

  • 0

hum... acho que entendi... porem ainda não ta 100% claro, talvez por inexperiência, mas vamos lá...

é o seguinte tenho um banco com cadastro de clientes ( telefone, registro, nome, DDD e operador que ligou para ele, aqui é uma empresa de call-center), bom, tem alguns clientes que estão com uma situação incorreta e precisaria alterar, isso hoje é feito direto no banco, por uma pessoa, queria disponibilizar um botão no Sistema e colocando o telefone+DDD, ele me daria as situação do cliente, nome, operador responsável e situação, onde a supervisora trocaria apenas a situação... bom a parte de pesquisa já esta ok, queria saber se essa forma seria a melhor forma usar o update, já que tenho que verificar a tabela guarda a informação e depois atualizar....

PS: tem que abrir a conexão??

ficaria:

rsSalvar.Open "select * FROM TABELA_Clientes WHERE TXT_DDD = '" & txtDDD.Text & "' and TXT_Telefone = '" & TxtTel.Text & "'", CN, 1, 3
     set update rssalva(situacao) = txtSituacao.text

Link para o comentário
Compartilhar em outros sites

  • 0

a mas você ta usando o update errado. seria assim ó:

rsSalvar.Open "select * FROM TABELA_Clientes WHERE TXT_DDD = '" & txtDDD.Text & "' and TXT_Telefone = '" & TxtTel.Text & "'", CN, 1, 3
     rsSalvar("situacao") = txtSituacao.Text
     rsSalvar.Update[/code] ai, exatamente como esta alterando o campo situacao, você pode adicionar qualquer outro campo q precisar. os demais vao permancer co mesmo valor.
PS: tem que abrir a conexão??
pra essa linha funcionar:
[code]rsSalvar.Open "select * FROM TABELA_Clientes WHERE TXT_DDD = '" & txtDDD.Text & "' and TXT_Telefone = '" & TxtTel.Text & "'", CN, 1, 3

a conexao (o objeto CN) tem q estar aberta.

Link para o comentário
Compartilhar em outros sites

  • 0

bom ai vai,

primeiro eu guardo o código da Situação em uma variável "aux", pois na tabela aparece o código e não o nome....

'====================================================#
'Busca Codigo da  nova Situação                                                                       #
'====================================================#
  rsSalvar.Open "SELECT * FROM TSCC_Situacao_Ligacao WHERE TXT_Descricao_Situacao =  '" & AxSituacao & "'", CN, 1, 3
        If Not rsSalvar.EOF Then  
           Aux = rsSalvar("NUM_Codigo_Situacao")
         End If
    rsSalvar.Close
após o achar o codigo alterar na tabela...
'====================================================#
'Verifica e altera na Tabela de Distribuição                                                         #
'====================================================#
   rsSalvar.Open "SELECT * FROM TSCC_Clientes WHERE TXT_DDD = '" & txtDDD.Text & "' and TXT_Numero = '" & TxtTel.Text & "'", CN, 1, 3
        If Not rsSalar.EOF Then
           rsSlavar("NUM_Codigo_Situacao") =  Aux 
           rsSalvar.Update
         End If
    rsSalvar.Close

Link para o comentário
Compartilhar em outros sites

  • 0

nossa esse codigo você copiou do seu programa o digito não mao na hora de postar?? porque olha isso daqui:

If Not rsSalar.EOF Then
           rsSlavar("NUM_Codigo_Situacao") =  Aux
           rsSalvar.Update[/code]

afinal qual o nome do seu recordset?? é rsSalar, rsSlavar ou rsSalvar??

bom mas levando em conta q o nome esteja certo no seu programa e você só errou na hora de postar, então acho q o seu select na deve estar retornando nd, verifica ai.

pra ajudar poe um breakpoint (F9) na linha q testa o EOF e veja se não é EOF, va avancando com F8.

Link para o comentário
Compartilhar em outros sites

  • 0
pra ajudar poe um breakpoint (F9) na linha q testa o EOF e veja se não é EOF, va avancando com F8.

como assim não entendi...

você diz se ele entra no EOF?? e altera os campos....sim ele faz isso

e se preocupa não foi na hora de digitar que saiu errado...

-------------------------------------------------------------------------

cara agora mudou, acho que a tabela que eu estava mexendo que não pode ser alterada assim, vou ver se descubro algo em relação....

muito obrigado...

só mais uma coisa... quando eu altero uma situação, e clico em pesquisar novamente, ele me da um erro tenho que fechar a tela e fazer uma nova pesquisa para verifica se alterou o campo.... isso será só em desenvolvimento?? ou quando gerar o executável tb ira acontecer??

Link para o comentário
Compartilhar em outros sites

  • 0
pra ajudar poe um breakpoint (F9) na linha q testa o EOF e veja se não é EOF, va avancando com F8.

como assim não entendi...

tava falando pra fazer debug, tipo, na janela de codigos, selecione uma linha e aperte F9 (ela vai ficar vermelha). quando você for rodar o programa (F5) e quando ele chegar nessa linha ele vai parar a execucao e ai você pode checar os valores das variaveis e propriedades atualmente. ai F5 continua a execucao, mas F8 vai executando linha a linha.

só mais uma coisa... quando eu altero uma situação, e clico em pesquisar novamente, ele me da um erro tenho que fechar a tela e fazer uma nova pesquisa para verifica se alterou o campo.... isso será só em desenvolvimento?? ou quando gerar o executável tb ira acontecer??

qual a mensagem do erro?? sera q não é porque o RecordSet ainda ta aberto e você tenta abrir de novo?? tipo, de um Close antes do Open.

Link para o comentário
Compartilhar em outros sites

  • 0

o problema era de conexão sim, ele avisava que já estava aberto... e se eu colocasse um "rs.Close" ele na primeira tentativa avisava que não poderia fechar o que esta fechado, a solução foi depois de salvar eu direcionei ele para ir no Form_Load e sim zerar a tela e conectar novamente normalmente assim funcionou...não sei se é o correto, mas por enquanto esta indo...

abrçs.. e muito Obrigado Kuroi

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...