Duvida como usar variaveis no form

Discussão em 'Progress 4GL' iniciado por gilsiqueira, Fevereiro 17, 2014.

  1. gilsiqueira

    gilsiqueira Membro Participativo

    quero fazer um cabecalho o qual algumas colunas sao variaveis

    assim : estamos em fevereiro , quero que o cabecalho do relatoio imprima os 6 ultimos meses

    setembro outubro novembro dezembro janeiro fevereiro saldo atual compras
    xxxxx xxxxxx xxxxx xxxxxx xxxxxx xxxxxx xxxxx xxxx

    se estiver em março o cabecaho avancará 1 mes ... outtubro novembro............

    obrigado desde ja,
  2. edu_felix

    edu_felix Sem Pontuação

    Boa Tarde,

    Utilize array.

    ficaria mais ou menos assim

    define variable x-mes as char format "x(3)" extend 12 initial ["Jan","Fev".......,"Dez"].

    ai você trata conforme sua necessidade.

    espero ter ajudado
  3. gilsiqueira

    gilsiqueira Membro Participativo

    até ai eu fiz, veja :
    DEF VAR r-mes AS CHAR EXTENT 6.

    DEF BUFFER b-item FOR ITEM.


    DEFINE VARIABLE n-mes AS CHARACTER NO-UNDO FORMAT "x(7)" EXTENT 12 INITIAL [" JANEIR", " FEVER", " MARCO", " ABRIL",
    " MAIO", " JUNHO", " JULHO", " AGOSTO",
    " SETEMB", " OUTUBR", " NOVEMB", " DEZEMB"].


    ASSIGN W-MES[1] = MONTH(TODAY).

    IF DAY(TODAY)> 20 THEN
    DO:
    ASSIGN
    w-mes[1] = w-mes[1] + 1. /* SE DIA DO MES MAIOR QUE 20 CONTA O MES NO GIRO */
    END.

    ASSIGN
    W-MES[2] = W-MES[1] - 6.
    IF W-MES[2] <= 0 THEN
    DO:
    C-ANO = C-ANO - 1.
    END.
    ASSIGN
    W-MES[3] = W-MES[1] - 5
    W-MES[4] = W-MES[1] - 4
    W-MES[5] = W-MES[1] - 3
    W-MES[6] = W-MES[1] - 2
    W-MES[7] = W-MES[1] - 1.

    REPEAT X = 2 TO 7.

    IF W-MES[X] < 0 THEN ASSIGN W-MES[X] = W-MES[X] + 12.
    IF W-MES[X] = 0 THEN ASSIGN W-MES[X] = 12.

    END.

    ASSIGN r-mes[1] = n-mes[w-mes[2]]
    r-mes[2] = n-mes[w-mes[3]]
    r-mes[3] = n-mes[w-mes[4]]
    r-mes[4] = n-mes[w-mes[5]]
    r-mes[5] = n-mes[w-mes[6]]
    r-mes[6] = n-mes[w-mes[7]].

    mas no form eu nao consigo colocar a variavel r-mes[1]....

    veja
    /*
    r-mes[1] AT 1 FORMAT "x(6)"
    r-mes[2] AT 8 FORMAT "x(6)"
    r-mes[3] AT 16 FORMAT "x(6)"
    r-mes[4] AT 24 FORMAT "x(6)"
    r-mes[5] AT 32 FORMAT "x(6)"
    r-mes[6] AT 40 FORMAT "x(6)"

    */



    FORM

    "Setemb" AT 1
    "Outubr" AT 8
    "Novemb" AT 16
    "Dezemb" AT 24
    "Janeir" AT 32
    "fevere" AT 40
    " MED-6M" AT 48
    " MED-3M" AT 56
    " VALE" AT 64
    " ESTOQ" AT 80
    " LIVRE" AT 90
    " REPOS " AT 110
    " ENCOM" AT 120 skip(1)

    with side-labels stream-io no-attr-space no-box width 132 page-top frame f-cabec1.

    sou obrigado a colocar literal como no codigo acima
  4. edu_felix

    edu_felix Sem Pontuação

    Ola,

    Vamos ver se eu entendi, você não consegue dar Put do array r-mes?
  5. gilsiqueira

    gilsiqueira Membro Participativo

    exatamente, quando utilizo a variaval r-mes[1] at 1 ele imprime exatatemte a literal r-mes[1]....

    ???
  6. Agnaldo

    Agnaldo Membro Ativo

    Código:
    DEFINE VARIABLE meses          AS CHARACTER INITIAL ["Janei,Fever,Março,Abril,Maio,Junho,Julho,Agost,Setem,Outub,Novem,Dezem"].
    DEFINE VARIABLE mesParaMostrar AS CHARACTER EXTENT 6.
    DEFINE VARIABLE data           AS DATE.
    DEFINE VARIABLE mes            AS INTEGER.
    DEFINE VARIABLE conta          AS INTEGER.
    DEFINE VARIABLE valores        AS DECIMAL EXTENT 6 INITIAL [1,2,3,4,5,6].
    
    /*
    DEFINE FRAME Tela
        mesParaMostrar FORMAT "X(5)"
        SKIP
        valores FORMAT ">>>.99"
    WITH ROW 1 NO-LABELS.
      */
    DEFINE FRAME Tela
        mesParaMostrar[1] FORMAT "X(5)" AT 1
        mesParaMostrar[2] FORMAT "X(5)" AT 12
        mesParaMostrar[3] FORMAT "X(5)" AT 24
        mesParaMostrar[4] FORMAT "X(5)" AT 36
        mesParaMostrar[5] FORMAT "X(5)" AT 48
        mesParaMostrar[6] FORMAT "X(5)" AT 60
        SKIP
        valores[1] FORMAT ">>>.99" AT 1
        valores[2] FORMAT ">>>.99" AT 12
        valores[3] FORMAT ">>>.99" AT 24
        valores[4] FORMAT ">>>.99" AT 36
        valores[5] FORMAT ">>>.99" AT 48
        valores[6] FORMAT ">>>.99" AT 60
    WITH ROW 1 NO-LABELS.
    
    
    ASSIGN data = DATE(08,01,2014). /* mes,dia,ano */
    
    ASSIGN mes = MONTH(data).
    DO conta = 1 TO 6:
        ASSIGN mesParaMostrar[conta] = ENTRY(mes,meses)
               mes = mes + 1.
        IF mes > 12 THEN ASSIGN mes = 1.
    END.
    DISPLAY mesParaMostrar 
            valores
    WITH FRAME Tela.
    

Compartilhe esta Página