Este artigo aplica-se a: |
Sage X3 |
Versão: |
V11 |
Domínio: |
|
|
|
Problema / Sumário
Acertar o unique id de uma tabela com o a referência única do próximo registo da tabela.
Descrição da Solução / Detalhes
Quando o unique id de uma tabela não está sincronizado com os registos da tabela podemos deparar-nos com erros de chave já existente.
Vejamos o exemplo da GACCENTRYD:
No caso desta tabela, o problema está normalmente associado ao campo ACCNUM. Este campo é do tipo UNQ, ou seja, utiliza um unique id atribuído à tabela em questão.
Para solucionar problemas de dessincronização entre o unique id atual da tabela e o último ACCNUM registado na tabela podemos fazer o seguinte procedimento:
Fazer um tratamento que use um infox para verificar o uniqid que está a ser atribuído para essa tabela. Comparamos depois com o campo UNQ da tabela (neste caso o ACCNUM) para ver se tem um dessincronismo.
Para verificar qual o unique id da tabela podemos executar a seguinte instrução:
Exemplo (GACCENTRYD):
(Nota: esta instrução incrementa o valor do unique id e apresenta o mesmo no ecrã).
Depois verificamos qual o valor do último ACCNUM registado na GACCENTRYD. Podemos, por exemplo, fazer uma query para apresentar os registos desta tabela por ordem decrescente do ACCNUM. Assim podemos identificar qual o valor mais alto registado na tabela até ao momento.
No caso de existir um dessincronismo, podemos escrever um tratamento para colocar o uniqid atribuído em conformidade com o seu campo na tabela:
O objetivo é fazer um ciclo while em que vai ser executada a instrução ‘uniqid([DAE])’ enquanto se verificar a condição uniqid[DAE]<= valor do último ACCNUM registado.
Assim, estes valores ficarão sincronizados e o próximo registo na tabela será realizado com o identificador único ainda não existente na tabela.