Ir para conteúdo
Fórum Script Brasil
  • 0

Erro "key Violation"


Curinga

Pergunta

Pessoal, obrigado pela ajuda, consegui resolver o problema anterior, mas agora ta acontecendo um segundo problema.

Toda vez que eu mando salvar da erro de "Key Violation". já mudei minha rotina toda e não acho o problema, o q pode ta acontecendo?

Ta ai a minha rotina, pessoal.

Para explicar melhor:

Antes de entrar nesse FORM(EDITAR), tem um FORM(PESQUISAR), então a pessoa pesquisa e os resultados aparecem

no DBGrid(DBPesquisa2). Ele clica com o botão direito em cima de um determinado resultado, e então abre o TPopupMenu com o item EDITAR

Nesse EDITAR do TPopupMenu tem um SHOW q leva até o nosso FORM(EDITAR).

procedure TEditar.FormActivate(Sender: TObject);

begin

TCPFisica.Edit;

Pesquisar.DBPesquisa2.SelectedIndex:=0;

TCPFisica.FieldByName('CODIGO').AsString := Pesquisar.DBPesquisa2.SelectedField.Text;

Pesquisar.DBPesquisa2.SelectedIndex:=1;

TCPFisica.FieldByName('NOME').AsString := Pesquisar.DBPesquisa2.SelectedField.Text;

etc...

etc...

end;

procedure TEditar.BtnSalvarClick(Sender: TObject);

begin

TCPFisica.Edit;

TCPFisica.Post;

MessageBox(Application.Handle, Pchar ('As informações foram salvas com sucesso.'), 'C-Commerce', MB_OK+MB_ICONWARNING+MB_DEFBUTTON1);

end;

O interessante disso tudo é que, o primeiro item q aparece do meu DBGrid, quando eu faço a pesquisa

da certo, ele altera, se eu fizer uma busca e achar dois ou mais resultados e fizer isso com o 2.º item q aparece, ou o 3º, ele da erro de "Key Violation", estranho...

Eu sei que eu tenho enchido vocês, mas eu não tenho a qm recorrer, por isso pesso a ajuda de vocês.

Obrigado, mais uma vez...

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ola amigo,

Este erro é muito comum, principalmente quando estamos começando a utilizar o bando de dados Paradox do Delphi. Quando criamos um campo chave (o que vai com um *) em uma tabela significa que este campo será o

principal - como um código. ELE NÃO PODE TER DOIS REGISTROS COM VALORES IGUAIS. Quando o programa tenta cadastrar dois registros com valores iguais aparece a mensagem "Key Violation". Para

arrumar o problema basta entrar o database desktop e ao restruturar a tabela re-criar os índices.

Tambem tive muito problemas com essa mensagem, já fiz ate o que me mandaram fazer para acabar com essa mensagem de erro KEY VIOLATION,

segue abaixo o codigo como evitar o Key Violation

Inclua a unit DBITYPES na clausula uses do seu form.

procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);

begin

if EDBEngineError(E).Errors[0].ErrorCode = 9729 then

ShowMessage('Registro já existe!');

Action:= daAbort;

end;

Resultado pra mim não adiantou em nada, resolvi mudar não uso mais chave primaria nem tables crio os indices com querys trabalhando com mestre/detalhe.

Bom amigo é isso ai que penso a respeito do KEY VIOLATION

beleza

T+

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...