Como pegar o nome do Banco de Dados via código fonte | Ti Responde 0107

No vídeo de hoje, vamos demonstrar em como buscar o nome da base de dados através de comandos em AdvPL.

A dúvida de hoje, nos perguntaram, se seria possível buscar o nome da base (do SQL Server, Oracle, etc) configurada para uso no ERP.

 

Pensando nisso, montamos esse exemplo, onde demonstramos em como buscar essa informação dentro do AppServer.ini via AdvPL.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} zVid0107
Função demonstrando em como buscar o nome da base de dados
@type user function
@author Atilio
@since 22/01/2024
/*/

User Function zVid0107()
    Local aArea       := FWGetArea()
    Local cNomeBase   := ""
    Local cStrError   := "ERROR"
    Local cPasso      := "1"
    Local cIniFile    := GetAdv97()

    /*
        Passo 1 vai ser verificar se tem a seção DbAccess, que fica separado a informação do ambiente, exemplo (dentro do appserver.ini):

        [DBAccess]
        DataBase=MSSQL
        Server=192.168.x.x
        ALIAS=NOME_DA_BASE
        Port=7890
    */
    cNomeBase := GetPvProfString("DbAccess", "Alias", cStrError, cIniFile)

    /*
        Passo 2 se não encontrou ou deu erro, ai vamos buscar novamente mas agora ao invés de "DbAccess" vamos usar a seção "TopConnect"
    */
    If Empty(cNomeBase) .Or. cNomeBase == cStrError
        cNomeBase := GetPvProfString("TopConnect", "Alias", cStrError, cIniFile)
        cPasso    := "2"
    EndIf

    /*
        Passo 3 se não encontrou ou deu erro, ai vamos buscar novamente mas agora ao invés de "TopConnect" vamos usar a seção "TotvsDBAccess"
    */
    If Empty(cNomeBase) .Or. cNomeBase == cStrError
        cNomeBase := GetPvProfString("TotvsDBAccess", "Alias", cStrError, cIniFile)
        cPasso    := "3"
    EndIf

    /*
        Passo 4, se mesmo assim não encontrou, vamos buscar direto do ambiente
    */
    If Empty(cNomeBase) .Or. cNomeBase == cStrError
        cNomeBase := GetSrvProfString("DBAlias", cStrError)
        cPasso    := "4"
    EndIf

    //Mostra o nome encontrado
    FWAlertInfo("Nome encontrado é: " + cNomeBase, "Passo " + cPasso)

    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