Ir para conteúdo

POWERED BY:

Arquivado

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

Davico

[Resolvido] Insert into salva 2 registros iguais

Recommended Posts

Oi pessoal, sou novo com postgreSQL, to com Delphi 7, Zeos e BDados postgreSQL...

instalei, fiz a conexão com o banco,... deu certo... so que ao executar uma query para inserir um registro, o registro é salvo. .... só q... acontece que o mesmo registro é salvo duas vezes ?????.. ... por favor alguem pode ajudar... o código é o seguinte:

 

qryClientes.Active := False;

qryClientes.SQL.Clear;

qryClientes.SQL.Add('INSERT INTO "public"."SYS0501"("ID","TP","NC","SX","DN" )');

qryClientes.SQL.Add('VALUES ( :ID, :TP, :NC, :SX, :DN )');

qryClientes.Params[0].AsString := edtCodigo.Text;

qryClientes.Params[1].AsString := IDTPessoa.Text;

qryClientes.Params[2].AsString := edtNome.Text;

qryClientes.Params[3].AsString := IDSexo.Text;

qryClientes.Params[4].AsDate := StrToDate(edtDNascimento.Text);

qryClientes.Active := True;

qryClientes.Refresh;

...

nÃO DA ERRO,... TA GRAVANDO... SO QUE DUPLICANDO REGISTROS ......

OU TA FALTANDO ALGUMA OUTRA COISA ....

 

agradeço antecipadamente qualquer comentário....

 

Davico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro... quando se monta querys de insert, delete ou update dinâmicas, não se usa usa comandos como Active := True; Refresh ou Open numa TQuery, e sim o Execute. Provavelmente o que está acontecendo com seu programa é que você dá dois comandos que fazem a mesma query de inserção ser executada uma vez cada neste trecho:

 

qryClientes.Active := True;
qryClientes.Refresh;

Troque este trecho pelo Execute da TQuery (não lembro agora de cabeça se é Execute ou ExecuteSQL, estou sem delphi aqui pra olhar agora). E faça inserts, updates e deletes dentro de try excepts, para tratar os erros de gravação que ocorrerem... a boa prática recomenda inclusive que se inicie transações e deem-se comits ou rollbacks quando necessário.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Sr. Chrnos,.. troquei ACTIVE x OPEN e exclui queryClientes.Refresh.... ta belezinha....

fiz a mesma coisa com outros cadastros e ta rodando 100% CERTO.

 

Muito obrigado,....

 

Abraços,

 

Davico.

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.