Auxilio em query

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

  1. lwazevedo

    lwazevedo Membro Ativo

    Boa Tarde caros amigos,

    Estou aqui mais uma vez para postar uma dúvida que já tentei resolver e ainda não consegui.

    Gostaria de saber como posso colocar o resultado de uma query em uma temp-table, segue a abaixo a query.

    def var t as char initial 'b-carro'.
    def var q as handle.
    def var b 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.

    já tentei fazer usando o seguinte
    create-like(t).
    e não deu certo.

    espero que alguém possa me da uma luz.

    grato.
  2. tandujar

    tandujar Membro Participativo

    Tenta seguir o exemplo abaixo.

    Se faltar alguma coisa e/ou der algum erro me avisa.

    Exemplo:

    Definições:

    DEFINE VARIABLE browse-hdl AS HANDLE.

    DEFINE QUERY q1 FOR ped-venda SCROLLING.

    OPEN QUERY q1 FOR EACH ped-venda where ped-venda.dt-implant = today NO-LOCK.

    VOCÊ PODE COLOCAR EM UM BOTÃO OU NO MAIN BLOCK:

    CREATE BROWSE browse-hdl
    ASSIGN TITLE = ""
    FRAME = FRAME fmain:HANDLE
    QUERY = QUERY q1:HANDLE
    X = 290
    Y = 34
    WIDTH = 95
    DOWN = 18
    VISIBLE = YES
    SENSITIVE = TRUE
    COLUMN-RESIZABLE = TRUE.

    OPEN QUERY q1 FOR EACH ped-venda where ped-venda.dt-implant = today NO-LOCK.
  3. lwazevedo

    lwazevedo Membro Ativo

    Não rolou....

    mas o resultado da query quero colocar em uma temp-table e não em um browser.

    se poder ajudar.
  4. lunho

    lunho Membro Participativo

    teste ai.



    Código:
    def var vtabela   as char.
    def var vcampos   as char.
    def var loop      as int.
    
    def var qh as handle.
    def var bh as handle.
    def var fh as handle.
    
    DEFINE TEMP-TABLE tableteste
        FIELD num AS CHAR.
    
    assign  vTabela = "customer"
            vCampos = "custnum,name,city,state,country,phone" 
            vCampos = "name"
            .
    
    create buffer bh for table vtabela.
    
    create query qh.
    qh:set-buffers(bh).
    qh:query-prepare("for each " + vTabela + " no-lock").
    qh:query-open.
    qh:get-first.
    
     output to "c:\temp\teste.csv" no-convert.
    
       do while not qh:query-off-end:
          do loop = 1 to num-entries(vcampos): 
    
             fh = bh:buffer-field(entry(loop,vcampos)). 
             fh = bh:buffer-field(vcampos).
    
             put unformatted fh:buffer-value ";". 
       
          
                
                    
           end. 
          put skip. 
          qh:get-next.
       end.
    
     output close. 
    
    
    DEF VAR vlinha AS CHAR.
    
    
    INPUT FROM "c:\temp\teste.csv".
    
        REPEAT :
            IMPORT UNFORMATTED vlinha.
            CREATE tableteste.
            ASSIGN
                tableteste.num = STRING(vlinha).
                DISPLAY tableteste.
        END.
    INPUT CLOSE.
    
    
    
    
    
  5. lwazevedo

    lwazevedo Membro Ativo

    Caro amigo realmente funcionou, mas infelizmente não é bem isso que estou tentando fazer, na realidade não gostaria de ter que criar
    um arquivo e depois ler o mesmo.

    O que estou tentando fazer é colocar um nome de qualquer tabela do banco em uma variável e com esta variável montar uma query com
    for each. isto e já consegui, mas o maior problema é o que ! consegui montar uma "copia" vamos dizer assim, do resultado da query para
    uma temp-table.

    a temp-table seria definida conforme a variável também, tipo def temp-table xxxx like variável. então praticamente ela teria a mesma estrutura
    da tabela que esta sendo usada na query, e gostaria de colocar nesta temp o resultado da query onde a mesma tenha as colunas da tabela e os respectivos
    valores. ---------Isso foi o que eu ainda não consegui fazer.....

    Se alguém poder ajudar agradeço.
  6. TrombiniSP

    TrombiniSP Membro Participativo

    Olá,

    Para usar o CREATE-LIKE vc precisa antes criar a TEMP-TABLE.

    Vc vai precisar de uma variável tipo HANDLE.

    Ex:
    Código:
    DEF VAR h-tt-copia AS HANDLE.
    
    CREATE TEMP-TABLE h-tt-copia.
    h-tt-copia:CREATE-LIKE(t).
    /* aqui tem a definição do nome ta TT e depois disso os campos serão criados e nenhuma alteração na estrutura da TT pode ser feita*/
    h-tt-copia:TEMP-TABLE-PREPARE("tt-copia"). 
    
    
    De uma olhada no Help selecionando CREATE TEMP-TABLE e teclando F1. Há um pequeno exemplo dos métodos que vc deverá usar.

    Abraço.

    Trombini

Compartilhe esta Página