Conectando em outra base de dados com TCLink e TCUnlink – Maratona AdvPL e TL++ 476

Nesse vídeo demonstraremos a utilização das funções TCLink e TCUnlink, que servem para realizar a conexão com outra base de dados configurada no DbAccess.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe476
Realiza uma conexão com outra base de dados, configurada no DbAccess
@type Function
@author Atilio
@since 03/04/2023
@see https://tdn.totvs.com/display/tec/TCLink e https://tdn.totvs.com/display/tec/TCUnlink
@obs 

    TCLink
    Parâmetros
        + cConn       , Caractere      , Indica o nome da conexão usada no DbAccess
        + cServerAddr , Caractere      , Indica o IP do servidor do banco de dados
        + nPort       , Numérico       , Indica o número da porta de conexão com o DbAccess
    Retorno
        + nHwnd       , Numérico       , Retorna um número de handle que será o identificador da conexão

    TCUnlink
    Parâmetros
        + nHandle     , Numérico       , Indica o número do handle que será desconectado
        + lVerbose    , Lógico         , Se .T. irá mensagens de warning no console.log
    Retorno
        + lRet        , Lógico         , Retorna .T. se a conexão foi encerrada com sucesso ou .F. se não

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe476()
    Local aArea := FWGetArea()
    Local cBcoDados:= "MSSQL/TESTE"      //Conexão no DbAccess com a outra base de Dados
    Local cServer  := "127.0.0.1"        //Servidor que está configurado o DbAccess
    Local nPorta   := 7890               //Porta da conexão do DbAccess
    Local nHandle  := 0                  //Ponteiro que armazenará a conexão
    Local cQuery   := ""
    
    //Conecta com Banco
    nHandle  := TcLink(cBcoDados, cServer, nPorta)
    
    //Se houve algum erro na conexão
    If nHandle < 0
        MsgInfo("Não foi possível conectar! Erro: " + cValToChar(nHandle), "Atenção")
        
    //Senão, insere um registro em uma tabela (você pode fazer outras operações como SELECT, UPDATE, etc)
    Else 
        cQuery += " INSERT INTO TABELA_XYZ " + CRLF
        cQuery += " (NOME, URL_SITE, PROFISSAO)  " + CRLF
        cQuery += " VALUES ('Teste automático', 'terminaldeinformacao.com', 'observação teste " + Time() + "') " + CRLF

        //Se houve falha, mostra uma mensagem
        If TCSqlExec(cQuery) < 0
            FWAlertInfo("Falha: " + TCSQLError(), "Teste TCLink e TCUnlink")
        Else
            FWAlertSuccess("Registro incluido com sucesso", "Teste TCLink e TCUnlink")
        EndIf
    Endif
    
    //Desconecta
    TCUnlink(nHandle)

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação