Dia da Semana

Discussão em 'Progress 4GL' iniciado por lunho, Julho 20, 2012.

  1. lunho

    lunho Membro Participativo

    Pessoal existe alguma função para verificar se a data é final de semana para fazer
    calculo com dias uteis.
    Valeu
  2. LeandroSantos

    LeandroSantos Membro Participativo

    Tem a função weekday que retorna de 1 a 7 sendo 1 Domingo e 7 Sábado.
    Código:
    message weekday(today) view-as alert-box.
    
  3. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Calendario - Dia da Semana

    Olá pessoal,

    Desenvolvi uma rotina para montar um calendário, que tiver interesse, o valor é simbólico, entre em contato comigo.

    Arquivos Anexados:

  4. lunho

    lunho Membro Participativo

    Estou fazendo cáculo para gerar parcelas de pagamento apenas nos dias uteis.
    no meu código esta fazendo certo apenas nos primeiros dias, depois começa a contar os sábados e os domingos.
    Alguem pode dar um help, pra ver onde estou errando.

    agradeço.

    Código:
    DEF VAR dat AS DATE FORMAT "99/99/9999".
    DEF VAR dat2 AS DATE.
    DEF VAR icont AS INT.
    DEF VAR periodo AS INT.
    DEF VAR mostradata AS DATE.
    DEFINE FRAME fr.
    DEFINE TEMP-TABLE tt
        FIELD d1 AS DATE FORMAT "99/99/9999".
    
    UPDATE dat periodo.
    RUN teste.
    PROCEDURE teste.
        DO icont = 0 TO (periodo - 1).
           
          IF WEEKDAY(dat) + icont  = 7 THEN
              dat = dat + 2.
    
          IF WEEKDAY(dat) + icont  = 1 THEN
              dat = dat + 2.
        
            dat2 = dat + icont.
         
          CREATE tt.
          ASSIGN tt.d1 = dat2.
     FOR EACH tt.
     END.
     MESSAGE dat2 VIEW-AS ALERT-BOX.
    
         
        END.
    END PROCEDURE.
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  5. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega,

    Veja se este exemplo te ajuda:

    Código:
    
    def var dt-vencto-real      as date         no-undo.
    def var dt-vencto-calc      as date         no-undo.
    def var dt-vencto           as date         no-undo.
    def var i-parcelas          as integer      no-undo.
    def var i-period-parc       as integer      no-undo.
    def var i-cont              as integer      no-undo.
    def var c-dia-semana        as character    no-undo init "Domingo,Segunda,Terça,Quarta,Quinta,Sexta,Sábado".
    
    procedure WinExec external "kernel32.dll":
      def input param prg_name                          as character.
      def input param prg_style                         as short.
    end procedure.
    
    /**************************************************************************/
    
    assign  i-parcelas     = 60
            i-period-parc  = 1 /*** em Dias ***/
            dt-vencto-calc = today.
    
    /**************************************************************************/
    
    output to value("c:\temp\parcelas.txt":U) no-convert.
    
    put "Parc Vencto Calc Dia Semana  " skip
        "---- ----------- ------------" skip.
    
    do i-cont = 1 to i-parcelas:
    
        assign  dt-vencto-calc = dt-vencto-calc + i-period-parc.
    
        if weekday(dt-vencto-calc) = 1 then
            assign dt-vencto-calc = dt-vencto-calc + 1.
        else
            if weekday(dt-vencto-calc) = 7 then
                assign dt-vencto-calc = dt-vencto-calc + 2.
    
        put i-cont                                         format "zzz9"       " " 
            dt-vencto-calc                                 format "99/99/9999" "  " 
            entry(weekday(dt-vencto-calc),c-dia-semana)    format "x(12)"      " " skip.
            
    end.
    
    output close.
    
    /**************************************************************************/
    
    run winexec (input "notepad.exe":u + chr(32) + "c:\temp\parcelas.txt":U, input 1).
    
  6. lunho

    lunho Membro Participativo

    Obrigado pela resposta Eduardo.
    Porém esta acontecendo o seguinte, as parcelas que caem no sabado e domingo, que o sistema joga pra segunda,
    não poderia acumular todas para segunda feira e sim para o final do numero de parcelas selecionado, lembrando que estou
    usando o perido de 1 dia para pagamento.
    Se tiver alguma solução e puder compartilhar agradeço.

Compartilhe esta Página