Olá meus amigos! Andei um pouco sumido, mas vou me esforçar em continuar postando conteúdo por aqui. Vamos falar de conexão com outros bancos de dados de dentro do Protheus.
Com as funções AdvConnection(), TCLink() e TcSetConn() podemos nos conectar a outras bases de dados através do DBAccess (TopConnect). Lembrando que primeiramente temos que seguir a configuração padrão que é criar a conexão ODBC no servidor onde está instalado o DBAccess e depois configurar no próprio DBMonitor como já fazemos com a base Protheus.
No nosso fonte, bastará alternar entre os bancos de dados para realizar consultas e comandos SQLs. Veja abaixo um exemplo simples para se conectar a um banco que chamamos de GRUPOBI onde o DBAccess se encontra no mesmo servidor da aplicação escutando na porta 7890.
Local cConexao := SuperGetMV("MV_XXCON01", .F., "MSSQL/GRUPOBI") Local cServerAddr := SuperGetMV("MV_XXCON02", .F., "localhost") Local nPort := Val(SuperGetMV("MV_XXCON03", .F., "7890")) If Type("_nTopProtheus") == "U" Public _nTopProtheus _nTopProtheus := AdvConnection() // obtém o ID da conexão atual EndIf If Type("_nTopGrupoBI") == "U" Public _nTopGrupoBI MsgRun("Conectando a Grupo BI...","Conexão",; {|| _nTopGrupoBI := TcLink(cConexao,cServerAddr,nPort) }) If _nTopGrupoBI < 0 MsgAlert("Não foi possível se conectar com Grupo BI. "+; "Essa falha pode ocorrer devido ao número de licenças excedidas. "+; "Tente mais tarde ou contate o administrador do sistema.") Return .F. EndIf EndIf TcSetConn(_nTopGrupoBI) // Utilize essa função para alternar entre as conexões
Você precisará de permissão para criação de tabelas no banco, pois o Protheus criará automaticamente nesta base as seguintes tabelas de controle do DBAccess: TOP_PARAM, TOP_SP, TOP_VIRTUALIDX, TOP_FIELD e TOP_IDXSTATS.
Vejam mais informações no TDN: http://tdn.totvs.com/display/tec/TCSetConn