Nesse vídeo demonstraremos a utilização das funções DbCommit e DbCommitAll que servem para efetivar manipulações (inclusão, alteração, exclusão) em registros das tabelas.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe120 Efetiva a gravação de dados de um alias ou de todos os alias alterados @type Function @author Atilio @since 13/12/2022 @see https://tdn.totvs.com/display/tec/DBCommit e https://tdn.totvs.com/display/tec/DBCommitAll @obs Função DbCommit Não possui parâmetros nem retorno Função DbCommitAll Não possui parâmetros nem retorno **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe120() Local aArea := FWGetArea() Local cDescAtu := "" Local cNomeAtu := "" DbSelectArea('SB1') SB1->(DbSetOrder(1)) //B1_FILIAL + B1_COD SB1->(DbGoTop()) DbSelectArea('SA1') SA1->(DbSetOrder(1)) //A1_FILIAL + A1_COD + A1_LOJA SA1->(DbGoTop()) //Exemplo com apenas 1 alias Begin Transaction //Se conseguir posicionar no produto If SB1->( MsSeek(FWxFilial('SB1') + 'F0003')) cDescAtu := Alltrim(SB1->B1_DESC)+"..." //Atualiza a Descrição RecLock('SB1', .F.) SB1->B1_DESC := cDescAtu SB1->(MsUnlock()) EndIf //Salva todas as alterações pendentes If FWAlertYesNo("Deseja salvar a alteração no produto?", "Continua (DbCommit)?") SB1->(DbCommit()) Else DisarmTransaction() EndIf End Transaction //Inicia o controle de transações Begin Transaction //Se conseguir posicionar no produto If SB1->( MsSeek(FWxFilial('SB1') + 'F0003')) cDescAtu := Alltrim(SB1->B1_DESC)+"..." //Atualiza a Descrição RecLock('SB1', .F.) SB1->B1_DESC := cDescAtu SB1->(MsUnlock()) EndIf //Se conseguir posicionar no cliente If SA1->( MsSeek(FWxFilial('SA1') + 'C00003')) cNomeAtu := Alltrim(SA1->A1_NOME)+"..." //Atualiza o nome RecLock('SA1', .F.) SA1->A1_NOME := cNomeAtu SA1->(MsUnlock()) EndIf //Salva todas as alterações pendentes If FWAlertYesNo("Deseja salvar todas as alterações?", "Continua (DbCommitAll)") DbCommitAll() Else DisarmTransaction() EndIf //Encerra a transação End Transaction FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.