• A Confluence está sendo executada atualmente com todos os plugins que não são do sistema desabilitados. Pode haver perda de algumas funcionalidades

Árvore de páginas

Permite alternar entre as conexões ativas com o DBAccess.

Sintaxe

TCSetConn( < nHandle > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

nHandle

numérico

Indica o número da conexão que deve ser tornar a corrente.

X


Retorno

Nome

Tipo

Descrição

lRet

lógico

Retorna verdadeiro (.T.), se a conexão corrente for trocada com sucesso. Se a conexão informada não existir ou já estiver sido fechada, a conexão atual é mantida e a função retorna falso (.F.).

Observações

  • A troca de uma conexão ativa não fecha a conexão anteriormente em uso.
  • Quando utilizamos mais de uma conexão, devemos trocar as conexões ativas quando necessário e abrir um recurso, tabela, query ou execução de statement, pois estas execuções são sempre realizadas na conexão ativa.
  • O handler indicado em nHandle é obtido no momento que a conexão é criada, quando utilizamos a função TCLink.
  • Esta função é útil quando da necessidade de integração de aplicações, onde o ERP utiliza um SGBD através do DBAccess, e existe a necessidade da aplicação AdvPL conectar com outro banco de dados para ler ou gravar informações. Neste caso, um programa customizado executado a partir do menu do ERP, que já está conectado com o DBAccess apontando para o banco oficial de dados, pode fazer um TCLink() para um outro DBAccess apontando para outro banco, e alternar entre as conexões ativas, abrindo tabelas e queries em uma conexão e gravando informações em tabelas abertas na segunda conexão.
  • Como a troca entre conexões ativas com o DBAccess requer o handler retornado pela TCLink, e o FrameWork do ERP Protheus já estabelece esta conexão, é possível obter o handler da conexão atual já existente no processo através da função de Framework "AdvConnection" (Esta função somente está disponíveis em repositório para ambientes TOP/SGBD).

Exemplos

// Exemplo de função que alterna entre conexão de dados de ERP e conexão adicional
// com outro banco através do DBAccess. Deve ser executada a partir do Menu do ERP.
User Function OtherConn()
  // Recupera handler da conexão atual com o DBAccess
  // Esta conexão foi feita pelo Framework do AdvPL, usando TCLink()
  Local nHndERP := AdvConnection()
  Local cDBOra  := "ORACLE/DB_TESTE"
  Local cSrvOra := "172.16.0.1"
  Local nHndOra := -1
  Local cQuery  := ''
  
  conout( "ERP conectado - Handler = " + str( nHndERP, 4 ) )
  
  // Cria uma conexão com um outro banco, outro DBAcces
  nHndOra := TcLink( cDbOra, cSrvOra, 7890 )
  If nHndOra < 0
    UserException( "Falha ao conectar com " + cDbOra + " em " + cSrvOra )
  Endif
  
  conout( "Oracle conectado - Handler = " + str( nHndOra, 4 ) )
  conout( "Banco = " + TcGetDB() )
  
  // Volta para conexão ERP
  tcSetConn( nHndERP )
  conout( "Banco = " + TcGetDB() )
  
  // Fecha a conexão com o Oracle
  TcUnlink( nHndOra )
  conout( "Oracle desconectado" )
  
  // Mostra a conexão ativa
  conout( "Banco = " + TcGetDB() )
Return

Veja também