Publicidade

Marcelo de Andrade

[Resolvido] Duplicate Entry

Boa noite.

 

Estou com um problema que ainda não consegui resolver:

Estou inserindo no MySQL, registros através da ZQuery ( Componente Zeos ), e o delphi me apresenta a mensagem:

SQL ERROR: DUPLICATE ENTRY 'valor' FOR KEY 'PRIMARY'

O problema é que mesmo sem registro algum no banco de dados, ele me apresenta esse erro. Já executei a query diretamente no mysql e funciona corretamente. O código que estou utilizando para inserir é esse:

 

     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Close;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.SQL.Clear;

     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.SQL.Append('INSERT INTO pessoa (cpf, nome, telefone, endereco, cidade, estado) VALUES (:CPF, :Nome, :Telefone, :Endereco, :Cidade, :Estado)');
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('CPF').AsString   := LabeledEditCPF.text;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('Nome').AsString  := LabeledEditNome.text;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('Telefone').AsInteger := StrToInt(LabeledEditTelefone.text);
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('Endereco').AsString := LabeledEditEndereco.text;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('Cidade').AsString := LabeledEditCidade.text;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Params.ParamByName('Estado').AsString := ComboBoxEstado.text;

     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.ExecSQL;
     UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Active := True;

 

Obs: Mesmo apresentando o erro, ele insere no BD.

 

Alguém conseguiria me ajudar?

Abraço.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como postar a DDL da tabela?

 

Pelo código que postou não parece ter problema algum...

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste removendo a linha

UnitDataModuleMySQL.DataModuleMySQL.ZQuery1.Active := True;

Pois para comandos de Insert, Update e Delete o ExecSQL() basta.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção de vocês.

 

@marcio.theis

Eu fiz esse teste ontem logo após ter postado, era exatamente essa linha, retirei e está funcionando corretamente. Problema Resolvido.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora