Como Selecionar Base de Dados

Discussão em 'Progress 4GL' iniciado por claide, Junho 9, 2010.

  1. claide

    claide Sem Pontuação

    Bom dia Pessoal,
    Com esse exemplo de código (abaixo) podemos relacionar o nome lógico dos bancos conectados, porém, existe um que está selecionado, aquele que deve estar selecionado quando abrimos o "Data Dictionary ou o Data Administration".
    Pergunto: Como podemos, via programação, alterar/apontar para outro base de dados?

    ******************************************************************************
    DEFINE TEMP-TABLE tt_bancos
    FIELD banco AS CHAR FORMAT "x(10)"
    INDEX pk_tt_bancos banco.
    DEFINE VARIABLE hdbancos AS HANDLE NO-UNDO.
    DEFINE VARIABLE ix AS INTEGER NO-UNDO.
    REPEAT ix = 1 TO NUM-DBS:
    CREATE tt_bancos.
    ASSIGN tt_bancos.banco = LDBNAME(ix).
    END.
    FOR EACH tt_bancos NO-LOCK:
    DISP tt_bancos.
    END.
    ******************************************************************************

    Abraços,
    Claide.
  2. kirchner

    kirchner Membro Participativo Moderador

    Claide,

    Tanto o DataDict quanto o DataAdmin consideram o alias dictdb como o banco selecionado.

    Se quiser mudar:
    Código:
    CREATE ALIAS dictdb FOR DATABASE sports.
  3. claide

    claide Sem Pontuação

    Bom dia Marcos,
    A minha intenção em selecionar um dos bancos conectados, é listar suas tabelas, ou seja, a _file.
    Fiz o exemplo abaixo para resgatar o nome logico e fisico dos bancos conectados, e dentro de um "for each", deletando e criando o alias dictdb para cada banco, dei um find first na _file, e para todos os bancos, a tabela mostrada é a primeira do banco que está selecionado no Datadictionary/DataAdministration.

    **************************************************************************
    DEFINE TEMP-TABLE tt_bancos
    FIELD logico AS CHAR FORMAT "x(10)"
    FIELD fisico AS CHAR FORMAT "x(10)".

    DEFINE VARIABLE ix AS INTEGER NO-UNDO.
    REPEAT ix = 1 TO NUM-DBS:
    CREATE tt_bancos.
    ASSIGN tt_bancos.logico = LDBNAME(ix).
    ASSIGN tt_bancos.fisico = PDBNAME(tt_bancos.logico).
    END.
    FOR EACH tt_bancos NO-LOCK:
    DELETE ALIAS dictdb.
    CREATE ALIAS dictdb FOR DATABASE VALUE(tt_bancos.logico).
    FIND FIRST dictdb._file NO-LOCK.
    DISP tt_bancos.fisico
    tt_bancos.logico
    dictdb._file._file-name
    WITH FRAME f-dados DOWN .
    END.
    **************************************************************************
    Abraços,
    Claide
  4. jalegria

    jalegria Membro Participativo

    Bom dia...

    Tenta criar o alias em um programa e carregar os nomes das tabelas em outro.
    Faz um teste. Coloca o codigo abaixo em um programa separado e no seu programa chama ele.

    FIND FIRST dictdb._file NO-LOCK.
    DISP dictdb._file._file-name WITH FRAME f-dados DOWN.

    Qualquer duvida estou a disposição...

Compartilhe esta Página