Publicidade

Arquivado

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

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