Radio-Set chamando Tabela ?

Discussão em 'Progress 4GL' iniciado por luciano.rocha, Novembro 24, 2010.

  1. luciano.rocha

    luciano.rocha Sem Pontuação

    Bom dia, quero fazer um radio-set chamar uma tabela do banco de dados, sou inicante em preogress , fiz um codigo , o radio-set é gerado porem a tabela não é chamada, gostaria de alguma ajuda , segue meu codigo abaixo:

    DEFINE FRAME FrameTeste.
    DEFINE VARIABLE Chama-Tabela AS INTEGER
    VIEW-AS RADIO-SET VERTICAL
    RADIO-BUTTONS
    "Customer", 1,
    "Order", 2,
    "SalesRep", 3.
    FORM Chama-Tabela WITH FRAME FrameTeste.
    ON 'CHOOSE':U OF Chama-Tabela IN FRAME FrameTeste
    DO:
    CASE Chama-Tabela:
    WHEN 1 THEN DO:
    FOR EACH sports.Customer.
    DISP Customer.City Customer.Country Customer.NAME Customer.Phone.
    END.
    END.
    WHEN 2 THEN DO:
    FOR EACH sports.Order.
    DISP Order.Order-Date Order.Order-num.
    END.
    END.
    WHEN 3 THEN DO:
    FOR EACH sports.Salesrep.
    DISP Salesrep.Rep-Name Salesrep.Region.
    END.
    END.
    END CASE.
    RETURN.
    END.
    UPDATE Chama-Tabela.

    se alguem puder ajudar fico muito grato, obrigado pela força, abraços ...
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Tente em vez do 'CHOOSE' colocar 'VALUE-CHANGED'.
  3. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega,

    Além de trocar de CHOOSE para VALUE-CHANGED você deve informar em qual frame está o campo no UPDATE, veja o exemplo ajustado abaixo, pois o ON VALUE-CHANGED está sendo direcionado para a frame FrameTeste e o UPDATE não está nesta frame.

    Código:
    def frame FrameTeste.
    
    defi var Chama-Tabela as integer
        view-as radio-set vertical
        radio-buttons "Customer", 1,
                      "Order", 2,
                      "SalesRep", 3.
    
    form Chama-Tabela with frame FrameTeste.
    
    on value-changed of Chama-Tabela in frame FrameTeste do:
    
        case input Chama-Tabela:
    
            when 1 then do: 
                for last item. 
                    disp 01 item.it-codigo.
                end.
            end.
    
            when 2 then do:
                for last saldo-estoq. 
                    disp 02 saldo-estoq.it-codigo.
                end.
            end.
    
            when 3 then do:
                for last item-uni-estab.
                    disp 03 item-uni-estab.it-codigo.
                end.
            end.
    
        end case.
    
    end.
    
    update chama-tabela with frame FrameTeste.
        
    wait-for window-close of current-window.
    
  4. luciano.rocha

    luciano.rocha Sem Pontuação

    Ola Eduardo, entendi através do seu exemplo como e porque colocar o UPDATE na mesma frame.
    Obrigado pelas dicas, como disse sou inicante , bem iniciante em progress e to me virando aqui como posso.
    Vou verificar o codigo que voce me passou e arrumar o meu, caso tenha mais duvidas ou de algum problema vou recorrer ao forum.
  5. luciano.rocha

    luciano.rocha Sem Pontuação

    Bom Dia, acatei as dicas passdas por voces aqui do forum , porem ainda continuo com o mesmo problema, o radio-set é gerado, aparentemente esta tudo correto mas quando seleciono o radio-set ainda não aparece nada na frame, não sei se fui claro , gostaria que quando selecionado o radio-set aparecesse a tabela na tela, acho que talvez o problema seja na logica ...
    Mesmo assim obrigado pela ajuda, vou continuar a pesquisar aqui , se alguem tiver mais alguma ajuda fico grato.

    At.
    Luciano Rocha
  6. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Luciano,

    O exemplo que haviamos enviado deveria funcionar, a unica diferença do seu é que mudei as tabelas, veja o exemplo abaixo com as tabelas do sports:

    Código:
    def frame FrameTeste.
    
    defi var Chama-Tabela as integer init 3
        view-as radio-set vertical
        radio-buttons "Customer", 1,
                      "Order",    2,
                      "SalesRep", 3.
    
    form Chama-Tabela with frame FrameTeste.
    
    on value-changed of Chama-Tabela in frame FrameTeste do:
    
        case input Chama-Tabela:
    
            when 1 then do: 
                for each Customer. 
                    disp "Customer" Customer.CustNum Customer.Name.
                    pause 0.
                end.
            end.
    
            when 2 then do:
                for each Order. 
                    disp "Order" Order.CustNum Order.Ordernum.
                    pause 0.
                end.
            end.
    
            when 3 then do:
                for each SalesRep.
                    disp "SalesRep" Salesrep.RepName Salesrep.SalesRep.
                    pause 0.
                end.
            end.
    
        end case.
    
    end.
    
    disp chama-tabela with frame FrameTeste.
    apply "value-changed":u to chama-tabela in frame FrameTeste.
    
    repeat:
    
    update chama-tabela with frame FrameTeste.
    
    end.
        
    wait-for window-close of current-window.
    
    Ao executar a rotina acima, foi mostrado as telas abaixo:





    Vale ressaltar o seguinte:

    01) Este é um exemplo básico, desta maneira somente depois de lido todos os registros da tabela e mostrado na tela, se permite mudar o radio-set.
    02) Para conseguir navegar na tabela e mudar o valor do radio-set para visualizar informações da outra tabela sem a necessidade de ler todos os registros da tabela, ao invés de usar o for each: disp. end., teríamos que trabalhar com query e browse.

    Arquivos Anexados:

Compartilhe esta Página