Mateus,
Seu código está incorreto.
Você faz uma query na tabela ZY0
para pegar o último número, porém se baseia no alias ZY0
aberto para gerar o próximo número com o Soma1
:
cQuery:= "SELECT MAX(ZY0_COD) AS CODZY0 " + ENTER
cQuery+= "FROM " +RetSqlName("ZY0")+ " ZY0" + ENTER
cQuery+= "WHERE ZY0.D_E_L_E_T_ = ''" + ENTER
cQuery+= "AND ZY0_IDF = 'L'" + ENTER
TCQuery cQuery New Alias ("TMP")
DbSelectArea("TMP")
cNUMZY0:= ZY0->ZY0_COD
cNUMZY0 := SOMA1(cNUMZY0)
TMP->(DbCloseArea())
Para corrigir essa situação, basta começar a usar sempre o alias TMP
, que é a sua query:
cQuery := "SELECT MAX(ZY0_COD) AS CODZY0 "
cQuery += "FROM " + RetSqlName("ZY0") + " ZY0 "
cQuery += "WHERE ZY0.D_E_L_E_T_ = '' "
cQuery += "AND ZY0_IDF = 'L'"
TCQuery cQuery New Alias ("TMP")
DbSelectArea("TMP")
cNUMZY0:= TMP->CODZY0
cNUMZY0 := SOMA1(cNUMZY0)
TMP->(DbCloseArea())
Acredito que o uso da numeração automática do Protheus ainda seja melhor, pois esse cenário de sempre pegar o MAX não tem nenhum semáforo ou tratativa para concorrência, com isso, existe uma possiblidade de duas ou mais pessoas usarem a rotina ao mesmo tempo e terem numeração repetidas.
Documentações sobre numeração automática:
https://tdn.totvs.com/display/framework/Configurando+o+Microsiga+Protheus
https://tdn.totvs.com/pages/viewpage.action?pageId=23889183
https://tdn.totvs.com/pages/viewpage.action?pageId=24346933
https://tdn.totvs.com/pages/viewpage.action?pageId=24347062
https://tdn.totvs.com/pages/viewpage.action?pageId=22479861
https://tdn.totvs.com/pages/viewpage.action?pageId=6815179
https://tdn.totvs.com.br/pages/releaseview.action?pageId=309411140
Mateus, seria necessário compreender o que você está fazendo, talvez colocar o seu código etc. Se você deseja incrementar um código, talvez a numeração automática do License Server seja mais indicada.
— Daniel Mendes 17 de Aug de 2022Daniel, por algum motivo não subiu o anexo do código. Anexei agora
— Mateus Zanin 19 de Aug de 2022Caso não tenha ficado claro o que acontece, tento detalhar melhor
— Mateus Zanin 19 de Aug de 2022