Fórum Key violation - DBGrid #408252

04/10/2011

0

O meu problema é que se eu colocar o mesmo código mais de uma vez no mesmo pedido ele me dá a mensagem de violação de chave.
Estou usando Delphi 7 com Paradox.
Tenho duas tabelas Pedido e PedidoItens. Nas duas existe o campo NumeroPedido, este campo está Key nas duas tabelas.
Coloquei a tabela PedidoItens em um componente DBGrid e criei o link PedidoNumeroPedido e PedidoItensNumeroPedido.

Agradeço a ajuda.
Fabiano Sanches

Fabiano Sanches

Responder

Posts

05/10/2011

Wilson Junior

Coloque a estrutura das suas tabelas aqui, para poder lhe ajudar da melhor maneira, e em que momento ocorre o erro.
Responder

Gostei + 0

05/10/2011

Fabiano Sanches

TABELA PEDIDO
FIELD NAME TYPE SIZE KEY
PEDIDO + *
DATA D
CODIGO_CLIENTE I
NOME_CLIENTE A 40
OBS A 40
VENDEDOR A 15

TABELA PEDIDOLINHA
FIELD NAME TYPE SIZE KEY
PEDIDO I *
MODELO I
TAMANHO N
QT N
OBS A 40
Responder

Gostei + 0

06/10/2011

Fabiano Sanches

Ah.... o erro acontece quando vou incluir um segundo item. Ou seja quando, quando vai gravar o segundo item na tabela pedidoslinha.
Responder

Gostei + 0

06/10/2011

Dempsey Silva

Angelo..
Você tem que declarara uma PK Composta para a table PEDIDOLINHA, ou seja com dois campos. Ex(NUMEROPEDIDO, PRODUTO).
Responder

Gostei + 0

07/10/2011

Fabiano Sanches

Estou muito agradecido Dempsey Alex de Sousa Silva pela solução e ao Wilson Lehapan Junior, vulgo Paulista...!!! pela atenção.
A criação de uma chave composta resolveu o problema !!!
Valew mesmo.
Era programador Progress e estou tentando iniciar no Delphi.... estou apanhando D+.
Gostaria de mais uma dica. Quando estou inserindo os itens no DBGrid (PedidoLinha) seria possível ele repetir um campo na próxima linha da grid ??

Exemplo: Na primeira linha coloquei o Modelo 123 Tamanho 10 Quantidade 1. Quando o cursor cair pra segunda linha ele repetir o campo Modelo da primeira linha.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar