advpl - Mata010 - MsExecAuto
Perguntas » advpl » Mata010 - MsExecAuto
Mata010 - MsExecAuto
Estou com uma demanda, mas não sei ao certo de como proceder para saná-la, com isso, gostaria de pedir a ajuda intelectual de vocês rs.
Seguinte, preciso realizar o cadastro de alguns produtos todos de uma vez via MsExecAuto, mas com a seguinte premissa: - Se por um acaso um desses itens dê erro durante o processo de inclusão, preciso que o cadastro de produto dê "Rollback" para todos os produtos.
É possível fazer esse procedimento via MsExecAuto ?
Algum de vocês já precisou realizar algo parecido ? Como resolveram ?
Quando precisamos dar um rollback, utilizamos dos comandos begin transaction, end transaction para abrir e fechar uma transação, e por fim, da função DisarmTransaction, essa função é usada quando ocorre um erro e você deseja fazer o rollback.
Para um fluxo de MsExecAuto ou FWMVCRotAuto em loop, ficaria mais ou menos da seguinte forma:
/*/{Protheus.doc} loopMata010
@since 05/04/2021
user function loopMata010()
local aProdutos as array //Seria o vetor dos produtos a serem inseridos
local lErro as logical
//Exemplo de variável que vai verificar o erro na inserção
//Poderia ser a lMsErroAuto, ou o retorno dos métodos VldData e CommitData
for nI := 1 to len(aProdutos)
//Inserção na SB1
Obs.: Hoje o MATA010 está em MVC e dispensa o uso do MsExecAuto, você pode fazer via modelo, o que é muito melhor, recomendo.
https://tdn.totvs.com/pages/releaseview.action?pageId=6087457
https://tdn.totvs.com/pages/viewpage.action?pageId=271843449
https://tdn.totvs.com/pages/releaseview.action?pageId=7372858
https://tdn.totvs.com.br/display/public/PROT/BEGIN+TRANSACTION
https://tdn.totvs.com.br/display/public/PROT/END+TRANSACTION
Daniel, é possível utilizar o Begin/End Transaction com o MVC?
— Maicon Macedo 2 weeks ago
Maicon, o commit padrão do MVC já faz isso por padrão.
— Daniel Mendes 1 week ago
Primeiro, gostaria de agradecer pela breve resposta. Contudo, caso eu utilize o código acima, o "Rollback" irá acontecer para somente o item que der problema, correto? No meu caso, eu preciso que por exemplo: - Tenho 10 itens para inclusão - Insiro 9 com sucesso e 1 com erro - Rollback é realizado para os 10 itens.
Desculpe se talvez eu não tenha deixado tão claro.
Obs: A resposta pode ser em MVC se for a melhor solução.
Não, o rollback vai ser para todos os itens, por isso ele começa antes do FOR.
— Daniel Mendes 2 weeks ago
Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl protheus msexecauto ou faça a sua própria pergunta.