Quando o controle de numeração do sistema for realizado através do hardlock e existir mais de uma base compartilhando este hardlock, precisamos utilizar uma chave chamada SpecialKey. Ela serve para que o sistema possa identificar qual base fez a requisição do próximo numero.
Vamos supor que temos um campo chamado A1_SEQUEN e o inicializador padrão deste campo executa a função GETSXENUM para buscar a numeração sequencial. Se tivermos uma base de teste e uma base de produção com esta mesma configuração, ao entrar na base de teste e executar a função, o sistema retornará o próximo numero e se depois entrarmos no ambiente de produção ele retornará o numero sequencial ao utilizado no ambiente de teste.
Numero recebido pela base de teste: 4
Numero recebido pela base de produção: 5
Isso acontece porque o hardlock não sabe o que é sua base de teste e o que é sua base de produção. Por isso devemos utilizar a chave SpecialKey no Ini do server para informar ao hardlock que estamos utilizando bases diferentes, assim a numeração de uma base será independente da outra.
A utilização da chave é bem simples, basta coloca-la abaixo da seção do ambiente. A chave necessita apenas de uma string que será utilizada para identificar a base, por exemplo, no ambiente de produção pode ser SpecialKey=prd e no ambiente de teste SpecialKey=tst.
Abaixo temos o exemplo de como o appserver.ini ficaria.
[producao] SourcePath=c:producaoApo RootPath=C:producao StartPath=system RpoDb=TOP LocalFiles=CTREE RpoLanguage=Portuguese RpoVersion=111 Trace=0 LocalDbExtension=.DTC SpecialKey=prd [teste] SourcePath=c:testeApo RootPath=C:teste StartPath=system RpoDb=TOP LocalFiles=CTREE RpoLanguage=Portuguese RpoVersion=111 Trace=0 LocalDbExtension=.DTC SpecialKey=tst
É isso ai galera, espero ter ajudado.