Erro ao alterar a base de dados - Registro inexistente

Boa noite,

Gostaria de compartilhar com os colegas uma situação interessante que ocorreu comigo hoje.

Desenvolvi uma aplicação formulário para atualizar uma tabela de preços de custo para um supermercado.

A tabela de preços é grande, com dezenas de fornecedores oferecendo milhares de produtos. Portanto um NxN (Produto x Fornecedor), com o atributo preço de custo. Esta tabela tem como PK uma coluna autoincremento.

Para tornar a tela amigável, criei uma aplicação controle, que seleciona o fornecedor e a categoria do produto para filtro.

A cláusula Where do formulário ficou assim:

CodigoFornecedor = [CodigoFornecedor]
AND
CodigoProduto in (select CodigoProduto from Produto where CodigoCategoriaProduto = [CodigoCategoria])

O formulário funcionou muito bem, com um pequeno detalhe:

Se dois usuários estivessem trabalhando simultaneamente, MESMO QUE EM FORNECEDORES DIFERENTES, quando o primeiro salvava uma alteração, o segundo recebia a mensagem de erro mencionada.

Resolvi a questão de duas maneiras:

1 - Na configuração “SQL” (Ou na configuração “Editar Campo”), ao invés de configurar o campo autoincremento como PK, configurei CodigoProduto+CodigoFornecedor como PK.

OU

2 - Na configuração “Chave Única”, configurei o campo autoincremento como UK1.

Quero deixar registrado por que pode ser útil para alguns, e pode ser corrigido em uma futura versão do ScriptCase.

Makoto

Para complementar, isto acontece tanto na opção múltiplos registros quanto na Grid Editável.

Não testei nas outras modalidades.