ERP – Cadastros de Fornecedores – Violação de chave
Incidente
No módulo de Cadastros, ao tentar inserir variações na ligação do produto ao fornecedor, é apresentada a mensagem: Violação de chave.
Causa
As variações são gravadas na tabela E403FPP. A chave da tabela E403FPP é o campo IdeUni.
Esse campo IdeUni, é controlado na tabela R900NXV, onde a cada nova tentativa de gravação gera o próximo número.
A tabela R900NXV está com um sequencial menor que consta já gravado no campo E403FPP.IdeUni. Isso justifica o erro que é apresentado.
Solução
O cadastro de variações da ligação do produto ao fornecedor por ser feito de duas maneiras no Gestão Empresarial | ERP:
1. Através da tela F403FPR - Cadastros / Clientes e Fornecedores / Fornecedores / Ligações / Fornecedor X Produtos / Individual, acionando o botão "Variações" que abre a tela F403FPP - Relacionamento entre Produtos Fornecedor e Produtos;
2. Através da tela F403LFP - Cadastros / Clientes e Fornecedores / Fornecedores / Ligações / Fornecedor X Produtos / Agrupado>
Nesta tela, temos a grid Variações (2) que permite digitar então o Relacionamento entre Produtos Fornecedor e Produtos que chamamos de variações.
Para que a mensagem não seja apresentada ao efetuar inclusão das variações, realize os passos a seguir:
1. Verifique o último numero gravado na tabela E403FPP. Segue o comando a ser executado para essa validação:
SELECT * FROM R900NXV WHERE CODPKY LIKE '%E403FPP%'
Exemplo abaixo:
2. Verifique o maior IdeUni gravado no campo da tabela E403FPP. Segue comando a ser executado para esta validação:
SELECT MAX(IDEUNI) FROM E403FPP
Exemplo abaixo:
3.Se o valor do campo E403FPP.IdeUni, retornado no passo 2, for menor ou igual ao número do controle de chave da tabela R900NXV.LstVal, retornado no passo 1, é possível afirmar que o controle está adequado e não é o causador dessa mensagem.
Já se o valor do campo E403FPP.IdeUni, retornado no passo 2, for maior que o número do controle de chave da tabela R900NXV.LstVal, retornado no passo 1, é possível afirmar que isto é a causa da mensagem, pois ao buscar o próximo número da chave retorna um que já existe e por isso resulta na mensagem de Violação de chave.
4. Confirmado problema no controle de chave, então tem que ajustar via comando no banco de dados o sequencial da tabela R900NXV para essa chave da tabela E403FPP.
Deve ser inserido um número igual ou maior que maior E403FPP.IdeUni já utilizado na tabela, conforme informação retornada no passo 2.
Exemplo de comando para realizar essa alteração:
UPDATE R900NXV SET LSTVAL = XX WHERE CODPKY = 'E403FPP'
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter e faça backup da informação original dos registros que serão afetados.