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