COMANDO SQL CASO NÃO ENCONTRE REGISTRO

 Tópico anterior Próximo tópico Novo tópico

COMANDO SQL CASO NÃO ENCONTRE REGISTRO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#484900 - 10/10/2018 22:26:50

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Tenho o seguinte código SQL abaixo, que executa quando o evento LostFocus ocorre no programa:

'Faz a conexão com o banco de dados
     ConnectDB
           rs.Open "SELECT * FROM tbResponsaveis WHERE CPF='" & txtCPFResp.Text & "'", db, 3, 3
            Do Until rs.EOF
                  cboCodResp.Text = Empty & rs!Codigo                                  'preenche a combobox com o código do registro
                  txtRGResp.Text = Empty & rs!RG                                           'preenche a textbox com o RG do registro
                  txtResponsavel.Text = Empty & rs!Nome                                'preenche a textox com o nome do registros
            rs.MoveNext
            Loop
      FechaDB

Como podem perceber quando se faz o loop e ele encontra algum registro que corresponda as especificações da instrução SQL, ele popula os campos com os dados do registro. Porém, o que houve é por exemplo, digamos que eu tenha digitado o CPF de forma equivocada e ele populasse os campos, pois ele encontrou registro, mas como era o CPF errado eu quero saber como adaptar o código para que eu pudesse digitar novo CPF que não tivesse no banco de dados e de forma automática fosse feita a limpeza dos campos Codigo, RG e Nome.

Sei que poderia simplesmente colocar um botão de limpeza dos campos, mas queria para nível de aprendizagem que me dessem algumas dicas para adaptar o código.

Desde já agradecido.



Resposta escolhida #484905 - 11/10/2018 09:42:20

JONESPARIS
ERECHIM
Cadast. em:Fevereiro/2006


Olá,
Você não precisa usar o Do Until, não precisa percorre, pode eliminar estas linhas, deixando assim:    

ConnectDB
           rs.Open "SELECT * FROM tbResponsaveis WHERE CPF='" & txtCPFResp.Text & "'", db, 3, 3
                  cboCodResp.Text = Empty & rs!Codigo                                  'preenche a combobox com o código do registro
                  txtRGResp.Text = Empty & rs!RG                                           'preenche a textbox com o RG do registro
                  txtResponsavel.Text = Empty & rs!Nome                                'preenche a textox com o nome do
FechaDB

Agora para Salvar, você pode fazer da seguinte forma, lembrando que não seria bom usar o cpf como chave, mas vamos lá...

ConnectDB
           rs.Open "SELECT * FROM tbResponsaveis WHERE Codigo='" & cboCodResp.Text & "'", db, 3, 3
           if rs.bof = true then
                 rs.addnew
           end if
                  rs!Codigo = cboCodResp.Text
                  rs!RG = txtRGResp.Text
                  rs!Nome = txtResponsavel.Text
          rs.update
FechaDB

Jones Paris

#484910 - 11/10/2018 18:46:30

IVANPI
GUAPIARA
Cadast. em:Janeiro/2017


Citação:
:
Olá,
Você não precisa usar o Do Until, não precisa percorre, pode eliminar estas linhas, deixando assim:    

ConnectDB
           rs.Open "SELECT * FROM tbResponsaveis WHERE CPF='" & txtCPFResp.Text & "'", db, 3, 3
                  cboCodResp.Text = Empty & rs!Codigo                                  'preenche a combobox com o código do registro
                  txtRGResp.Text = Empty & rs!RG                                           'preenche a textbox com o RG do registro
                  txtResponsavel.Text = Empty & rs!Nome                                'preenche a textox com o nome do
FechaDB

Agora para Salvar, você pode fazer da seguinte forma, lembrando que não seria bom usar o cpf como chave, mas vamos lá...

ConnectDB
           rs.Open "SELECT * FROM tbResponsaveis WHERE Codigo='" & cboCodResp.Text & "'", db, 3, 3
           if rs.bof = true then
                 rs.addnew
           end if
                  rs!Codigo = cboCodResp.Text
                  rs!RG = txtRGResp.Text
                  rs!Nome = txtResponsavel.Text
          rs.update
FechaDB


Ola, exatamente isso, consegui eliminando o Do Until.

Valeu! :)



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por IVANPI em 11/10/2018 18:46:50