Exporta Temp-Table sem Precisar mencionar os campos

Discussão em 'Progress 4GL' iniciado por Alexan, Janeiro 5, 2011.

  1. Alexan

    Alexan Membro Participativo

    Galera é o seguinte:

    Se preciso exportar uma temp-table com todos os campos, basta fazer conforme abaixo:

    output to value("c:\NomeDaTabela.txt").
    FOR EACH NomeDaTabela NO-LOCK:
    EXPORT delimiter ";" NomeDaTabela.
    END.
    output close.

    Beleza, até aí tudo bem! Agora como faço para exportar da mesma forma, porém que na primeira linha do arquivo gerado, apareça o nome dos campos (como título, entendem?). Mas, de uma forma que eu não precise mencionar um a um o nome de cada campo (vai que a tabela tem 40 campos...)

    No aguardo,
    Edson
  2. kirchner

    kirchner Membro Participativo Moderador

    Edson,

    Não sei se é a melhor forma, mas na tabela _Field ficam gravados os nomes de todos os campos de todas as tabelas. Você pode ler desta tabela e mandar gravar no relatório.
  3. Alexan

    Alexan Membro Participativo

    Achei interessante sua ajuda... mas, como fazer?
    Dei um for each na _Field e um disp, só que me mostrou um monte de códigos.

    Como é que descubro o nome da tabela que quero?
    Como estou iniciando no Progress, não sei como fazer, poderia me ajudar?

    Sds,
    Edson
  4. denilson.silva

    denilson.silva Membro Participativo

    Edson
    pode utilizar o seguinte código:
    Código:
    OUTPUT TO c:/temp/emitente.txt.
    for each _File 
        where _File._file-name = "emitente"
        ,each _field of _File:
           
        IF _field._col-label <> ? THEN
            PUT trim(_field._col-label) ";".
        ELSE 
            PUT (_field._field-name) ";".
    end.
    PUT SKIP.
    <coloque aqui seu código>
    
    Caso não exista definição de "Label" para o campo, o programa retorna o nome do campo.

    sds
    Denilson
  5. Alexan

    Alexan Membro Participativo

    Valeu denilson, vou experimentar e já retorno informando se funcionou ou não.

    Sds,
    Edson
  6. Alexan

    Alexan Membro Participativo

    Denilson,


    Fiz desta forma:

    DEFINE TEMP-TABLE Temp_Unico NO-UNDO
    FIELDS data AS DATE FORMAT "99/99/9999" LABEL "Data"
    FIELDS correcao AS DECIMAL FORMAT "-ZZ,ZZZ,ZZZ,ZZ9.99" LABEL "Correção"
    FIELDS juros AS DECIMAL FORMAT "-ZZ,ZZZ,ZZZ,ZZ9.99" LABEL "Juros"
    FIELDS valor_atu AS DECIMAL FORMAT "-ZZ,ZZZ,ZZZ,ZZ9.99" LABEL "Valor Atual"
    FIELDS BG_COLOR AS INTEGER
    INDEX Ind_Temp_Unico data.


    OUTPUT TO d:/emitente.txt.
    for each _File
    where _File._file-name = "Temp_Unico"
    ,each _field of _File:

    IF _field._col-label <> ? THEN
    PUT trim(_field._col-label) ";".
    ELSE
    PUT (_field._field-name) ";".
    end.
    PUT SKIP.

    Mas,gerou apenas um arquivo em branco! Poderia me ajudar?

    No aguardo,
    Edson

Compartilhe esta Página