Nesse vídeo demonstraremos a utilização das funções TCSQLExec e TCSQLError, que servem para executar operações no banco (como update) e capturar a mensagem de erro se houver.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe482
Executa uma operação de atualização no Banco de Dados
@type Function
@author Atilio
@since 03/04/2023
@see https://tdn.totvs.com/display/tec/TCSQLExec e https://tdn.totvs.com/display/tec/TCSQLError
@obs
TCSQLExec
Parâmetros
+ cStatement , Caractere , Query que será executada
Retorno
+ nStatus , Numérico , Retorna um número com o resultado de execução da query (se menor que 0 aconteceu algum erro)
TCSQLError
Parâmetros
Função não tem parâmetros
Retorno
+ cReturn , Caractere , Retorna o texto com o erro após acionar o TCSQLExec
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe482()
Local aArea := FWGetArea()
Local cQuery := ""
//Monta uma query normal de atualização
cQuery := " UPDATE " + RetSQLName("SB1") + " " + CRLF
cQuery += " SET B1_X_TESTE = 'ZZ" + Time() + "' " + CRLF
cQuery += " WHERE B1_COD = 'F0001' " + CRLF
//Se houve falha, mostra uma mensagem
If TCSqlExec(cQuery) < 0
FWAlertInfo("Falha: " + TCSQLError(), "Teste 1 TCSQLExec e TCSQLError")
Else
FWAlertSuccess("Registro alterado com sucesso", "Teste 1 TCSQLExec e TCSQLError")
EndIf
//Monta uma query normal que conterá um erro
cQuery := " UPDATE " + RetSQLName("SB1") + "aaa " + CRLF
cQuery += " SET B1_X_TESTE = 'ZZ" + Time() + "' " + CRLF
cQuery += " WHERE B1_COD = 'F0001' " + CRLF
//Se houve falha, mostra uma mensagem
If TCSqlExec(cQuery) < 0
FWAlertInfo("Falha: " + TCSQLError(), "Teste 2 TCSQLExec e TCSQLError")
Else
FWAlertSuccess("Registro alterado com sucesso", "Teste 2 TCSQLExec e TCSQLError")
EndIf
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.