Ir para conteúdo

POWERED BY:

Arquivado

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

clayton-mer

Fazer verificação antes de cadastrar no banco

Recommended Posts

primeiramente gostaria de pedir desculpas, por ter postado um outro post antes mais tentei apagar mais não consegui. o problema que tinha de importar o arquivo txt eu resolvi agora preciso da seguinte coisa.

 

exempro

 

tem um arquivo txt da seguinte estrutura

 

paulo|10

joao|25

maria|30

 

onde tem nome e pontos em numero está importanto certinho para o banco o problema agora é o seguinte

 

se vou importar outro arquivo com os seguintes dados

 

paulo|20

joao|60

maria|100

 

ele cadastra novamente, teria que fazer era verificar se o nome já está cadastrado e atualizar só os ponto que foi onde teve a alteração mais não consegui fazer isso.

 

esse é o código que estou usando para cadastrar

CODE
Do while not texto.AtEndOfStream

 

arrayLinha=split(texto.ReadLine,"|",-1,1)

 

conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('"&arrayLinha(0)&"',"&arrayLinha(1)&")"

 

loop

 

eu tentei assai mais não deu

 

CODE
arrayLinha=split(texto.ReadLine,"|",-1,1)

 

Set Validacao = conexao.execute("select * from cliente where nome='"&arrayLinha(0)&"'")

if Validacao.EOF then

conexao.execute "UPDATE cliente SET nome = '"&arrayLinha(0)&"', idade = '"&arrayLinha(1)&"'"

else

conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('"&arrayLinha(0)&"',"&arrayLinha(1)&")"

end if

 

loop

 

não sei se é dessa forma gostaria da ajuda de vcs se possivel. muito obrigado desde já.

 

att.

 

clayton

Compartilhar este post


Link para o post
Compartilhar em outros sites

O UPDATE ficaria

 

"UPDATE cliente SET idade = '"&arrayLinha(1)&"' WHERE nome = '"&arrayLinha(0)&"'"

veja se vai agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

O UPDATE ficaria

 

"UPDATE cliente SET idade = '"&arrayLinha(1)&"' WHERE nome = '"&arrayLinha(0)&"'"

veja se vai agora

Mário Monteiro

 

caso tenha que atualizar mais dados pode ser assim

 

"UPDATE cliente SET idade = '"&arrayLinha(1)&"', endereco = '"&arrayLinha(2)&"' WHERE nome = '"&arrayLinha(0)&"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal está acontecndo o seguinte agora. eu estou usando o código abaixo ele teria que verificar se o registro já existe se existir ele tem que atualizar, e se não existe ele tem que casdastrar mais ele não está verificando ele cadastra novamente então acho que que seja alguma coisa em meu if. vcs pode me ajudar

 

segue código abaixo, que cadastra e não verifica.

CODE
arrayLinha=split(texto.ReadLine,"|",-1,1)

Set Validacao = conexao.execute("select * from cliente where nome='"&arrayLinha(0)&"'")

if Validacao.EOF then

conexao.execute "UPDATE cliente SET nome = '"&arrayLinha(0)&"', idade = '"&arrayLinha(1)&"'"

else

conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('"&arrayLinha(0)&"',"&arrayLinha(1)&")"

end if

loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

seu update ainda esta errado

 

mas o erro nao é so esse

 

voce diz que esta inserindo denovo? tem certeza que é igualzinho? nao espaços ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

seu update ainda esta errado

 

mas o erro nao é so esse

 

voce diz que esta inserindo denovo? tem certeza que é igualzinho? nao espaços ?

Marcio acontece isso mesmo que lhe disse com esse código que está acimo ele não atualiza como eu gostaria, ele somente cadastra novamente outro registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do while not texto.AtEndOfStream
arrayLinha=split(texto.ReadLine,"|",-1,1)
Set Validacao = conexao.execute("select * from cliente where nome='" & TRIM(arrayLinha(0)) & "'")
if Validacao.EOF then
conexao.execute "UPDATE cliente SET idade = '" & arrayLinha(1) & "' WHERE nome = '" & TRIM(arrayLinha(0)) & "'"
else
conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('" & TRIM(arrayLinha(0)) & "'," & arrayLinha(1) & ")"
end if
loop

Tente assim para ver se funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz a mesma coisa ele cadastra tudo de novo dai fico com o mesmo nome duas vezes no na mesma tabela e com esse código que você me passou da mais um tipo de erro se a tabela tiver vazia ele não cadastra nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro esta qui

 

if Validacao.EOF then

ponha

 

if NOT Validacao.EOF then

So acrescente o NOT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz a mesma coisa, ele add mais não atualiza o que já tem cadastro.

 

preciso que verifique se o registro existe se existir e tiver igual ele não fazer nada e se tiver diferente ele atualizar, mais ele não atualiza, e cadastra novamente.

com esse código, talvel é alguma erro na verificação...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como ficou seu codigo agora?

 

antes estava errado mesmo

 

veja assim

 

Do while not texto.AtEndOfStream
arrayLinha=split(texto.ReadLine,"|",-1,1)
Set Validacao = conexao.execute("select * from cliente where nome='" & TRIM(arrayLinha(0)) & "'")
if NOT Validacao.EOF then
conexao.execute "UPDATE cliente SET idade = '" & arrayLinha(1) & "' WHERE nome = '" & TRIM(arrayLinha(0)) & "'"
else
conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('" & TRIM(arrayLinha(0)) & "'," & arrayLinha(1) & ")"
end if
loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe se estiver falando bobagem mais não está faltando o parenteses na instrução?

 

conexao.execute ("UPDATE cliente SET idade = '" & arrayLinha(1) & "' WHERE nome = '" & TRIM(arrayLinha(0)) & "'")

obrigado mais não é isso não

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está agora o seu codgo? voce nao postou

Compartilhar este post


Link para o post
Compartilhar em outros sites
CODE
Do while not texto.AtEndOfStream
arrayLinha=split(texto.ReadLine,"|",-1,1)
Set Validacao = conexao.execute("select * from cliente where nome='" & TRIM(arrayLinha(0)) & "'")
if NOT Validacao.EOF then
conexao.execute "UPDATE cliente SET idade = '" & arrayLinha(1) & "' WHERE nome = '" & TRIM(arrayLinha(0)) & "'"
else
conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('" & TRIM(arrayLinha(0)) & "'," & arrayLinha(1) & ")"
end if
loop


com esse código que você postou faz a mesma coisa se o banco tiver sem registro ele não adiciona e nen atualiza. já tentei de varias formas e não da fica do mesmo jeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o dado que está gravado no BD não contém espaços antes/depois, isso vai fazer com que a seleção seja sempre nula caso esteja comparando com uma var que não contenha espaços ou os contenha em locais diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o dado que está gravado no BD não contém espaços antes/depois, isso vai fazer com que a seleção seja sempre nula caso esteja comparando com uma var que não contenha espaços ou os contenha em locais diferentes.

 

o meu txt está da seguinte forma

 

eduardo|2

maria|10

Jose|25

Joao|

 

e não tem espaço em menhum lugar salgado, gostaria de saber de vcs se o if está certo a forma que montei a verificação por não dá certo já tentei de varias formas e nada.

 

sempre fica do mesmo jeito, se tem dados na db ele cadastra novamente não atualiza e não tem nada na db ele nen cadastra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente fiz um teste aqui e o codigo de inserir e editar está correto.

 

com o seguinte e adiciona certinho

CODE
Do while not texto.AtEndOfStream

 

arrayLinha=split(texto.ReadLine,"|",-1,1)

 

conexao.execute "INSERT INTO cliente (nome, idade) VALUES ('"&arrayLinha(0)&"',"&arrayLinha(1)&")"

 

loop

 

e com o código de editar também edita

 

CODE
Do while not texto.AtEndOfStream

 

arrayLinha=split(texto.ReadLine,"|",-1,1)

 

conexao.execute "UPDATE cliente SET idade = '" & arrayLinha(1) & "' WHERE nome = '" & TRIM(arrayLinha(0)) & "'"

 

loop

 

o problema é mesmo no if, alguem tem alguma outra ideia de como fazer um verificação, a lógica que acho que é se cliente for igual a cliente tem que editar, mais se o cliente não tiver cadastro no banco ele tem que adicionar.

 

quem tiver alguma ideia por favor posta ai para estudar.

 

até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste no SELECT agora, verifica se ele está retornando algo realmente.

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.