1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Leitura de _ACTBUFFER por Banco

Discussão em 'Progress 4GL' iniciado por vithor.silva, Abril 9, 2009.

  1. vithor.silva

    vithor.silva Sem Pontuação

    Senhores,

    O problema é o seguinte: Tenho em uma conexão 5 bancos, precisava exportar as informações da tabela interna _ACTBUFFER destes bancos. O problema é que realizar a exportação dos dados eu sei, porém não sei uma instrução que faça a "troca do banco" conectado atualmente, visto que eu faço assim:

    Código:
    FOR EACH _ACTBUFFER NO-LOCK:
    	EXPORT DELIMITER ";" _ACTBUFFER.
    END.
    

    Nesta intrução extrai o ACTbuffer, mas do banco corrente, como ir alternando entre os bancos que estou conectado?
    No SQL até que sei fazer, seria algo como:
    USE EMS5
    GO
    ...
    USE EMS2
    GO
    ...

    E no Progress?

    Sds,
    Vithor da Silva e Silva
    http://www.vithorsolutionsti.blogspot.com
  2. atila.cm

    atila.cm Membro Participativo

    Basta informar o nome do banco antes da tabela conforme abaixo

    FOR EACH ems5._ACTBUFFER NO-LOCK:
    EXPORT DELIMITER ";"ems5. _ACTBUFFER.
    END.

    FOR EACH ems2._ACTBUFFER NO-LOCK:
    EXPORT DELIMITER ";" ems2._ACTBUFFER.
    END.

    abraços

    Átila
  3. vithor.silva

    vithor.silva Sem Pontuação

    Desta forma, sei que daria certo....
    Porém gostaria de algo mais dinâmico.

    Tentei usar algo com o NUM-DBS, ou seja, teria um DO i=0 TO NUM-DBS... desta forma, estaria fazendo o FOR EACH, conforme a quantidade de bancos conectados....
    Porém, não consegui trocar o banco que estou conectado...

    Enfim, alguem pode me ajudar?
    Sds,
    Vithor da Silva e Silva
  4. arnaldoclima

    arnaldoclima Membro Participativo

    Vithor ,

    Boa Noite ,

    Olha ai se da forma ai ajuda.

    /* Declare uma variavel para criar uma aliases do banco
    Cria a variavel substituindo o ldbname(1) até o (5) e cada uma é o nome do banco */

    def var i-banco as char.
    def var i as int.

    do i = 1 to 5: /* 5 BANCOS */

    assign i-banco = ldbname(i).

    create alias dictdb for database value(ldbname(i-banco)).

    for each dictdb._ACTBUFFER NO-LOCK.

    EXPORT DELIMITER ";" dictdb._ACTBUFFER.

    end.

    end.
  5. vithor.silva

    vithor.silva Sem Pontuação

    O resultado continua sendo, apenas do Banco em que o Progress está conectado.
    Código:
    /* Declare uma variavel para criar uma aliases do banco
    Cria a variavel substituindo o ldbname(1) até o (5) e cada uma é o nome do banco */
    OUTPUT TO C:\temp\testeBancos.txt.
    
    def var i-banco as char.
    def var i as int.
    
    do i = 1 to 5: /* 5 BANCOS */
    
    assign i-banco = ldbname(i).
    
    create alias dictdb for database value(ldbname(i-banco)).
    
    for each dictdb._ACTBUFFER NO-LOCK:
        PUT ldbname(i).
        [b]EXPORT DELIMITER ";" dictdb._ACTBUFFER.[/b]
    END.
    
    end.
    
    OUTPUT CLOSE.
    
    Apesar de ir intercalando entre os bancos através do ALIAS, ao exportar apenas temos o mesmo resultado:
    banco1 205332;361;1524;52;1;30;26;314;0;0;0;15;2995993;?
    banco2 205332;361;1524;52;1;30;26;314;0;0;0;15;2995993;?
    banco3 205332;361;1524;52;1;30;26;314;0;0;0;15;2995993;?
    banco4 205332;361;1524;52;1;30;26;314;0;0;0;15;2995993;?
    banco5 205332;361;1524;52;1;30;26;314;0;0;0;15;2995993;?

    Mas acho que seja por ai mesmo.... :p
    Sds,
    Vithor da Silva e Silva
    www.vithorsolutionsti.blogspot.com
  6. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Neste utiliza 2 rotina, uma para criar o ALIAS e chamar a outra com o ALIAS criado.

    Rotina: "c:\temp\exporta_db.p"
    Rotina: "c:\temp\exporta_db_i.p"

    Espero tê-lo ajudado.

    Arquivos Anexados:

Compartilhe esta Página