Auxilio em query

Discussão em 'Progress 4GL' iniciado por lwazevedo, Fevereiro 4, 2013.

  1. lwazevedo

    lwazevedo Membro Ativo

    Caro amigo,

    Sua opção funcionou bem, mas não consegui ler a temp-table ou seja aplicar for each. segue a baixo como fiz. li o help mas como sou iniciante na linguem
    algumas coisas ainda não entendo. mas agradeço a ajuda.


    def var t as char initial 'b-carro'.
    def var q as handle.
    def var b as handle.

    DEF VAR h-tt-copia AS HANDLE.

    create buffer b for table t.

    create query q.
    q:add-buffer(b).
    q:query-prepare('for each ' + t + ' no-lock').
    q:query-open.

    CREATE TEMP-TABLE h-tt-copia.
    h-tt-copia:CREATE-LIKE(t).
    h-tt-copia:TEMP-TABLE-PREPARE("tt-copia").


    gostaria de ler esta temp-table.
  2. TrombiniSP

    TrombiniSP Membro Participativo

    Olá,

    Para ler a TT vc deverá proceder da mesma forma que o fez para a tabela principal. Ou seja, criar uma Query, atribuir o buffer, usar o QUERY-PREPARE, etc...

    Abraços.

    Trombini
  3. lwazevedo

    lwazevedo Membro Ativo

    Caro trombniSp,

    Fiz uma nova query conforme a baixo.

    DEFINE VARIABLE i AS INTEGER.
    DEFINE VARIABLE qh AS WIDGET-HANDLE.
    DEFINE VARIABLE bh AS WIDGET-HANDLE.
    DEFINE VARIABLE fh AS WIDGET-HANDLE.

    def temp-table tt
    field campo as char
    field valor as char.

    def var c-tab as char.
    c-tab = "b-carro".

    CREATE BUFFER bh FOR TABLE c-tab.
    CREATE QUERY qh.

    qh:SET-BUFFERS(bh).
    qh:QUERY-PREPARE("for each " + c-tab).
    qh:QUERY-OPEN.
    qh:GET-FIRST.


    REPEAT i = 1 TO bh:num-fields.

    fh = bh:BUFFER-FIELD(i).

    create tt.
    assign tt.campo = fh:name
    tt.valor = STRING(fh:BUFFER-VALUE).

    END.

    DELETE WIDGET bh.

    ela faz exatamente o que eu preciso, porém o repeat começa em um e termina quando chega no ultimo campo existem da tabela, e por causa disto, o conteúdo é impresso uma unica vez.... Exemplo :

    digamos que a table tem 3 campos: nome, sobrenome e idade e que tenha 300 registros.
    quando ele cria a temp ele simplesmente coloca os três campos nome, sobrenome e idade com a penas um unico registro. e eu precisava que ele trouce-se os três campos nome, sobrenome e idade mas com todos os registros existentes na tabela.

    poderia me auxiliar, há por estou fazendo isto desta forma, simplesmente por que me trás conforme a tabela, com os exatos nomes do campo.

    valeu.
  4. lwazevedo

    lwazevedo Membro Ativo

    Resolvido no tópico todos registros na query.

    agradeço pela ajuda aqui postada.

Compartilhe esta Página