Somar o mês em campo data

494 views
Skip to first unread message

jhonson

unread,
Oct 17, 2008, 5:39:07 PM10/17/08
to Progress - 4GL
Se eu quiser adicionar um mês em um campo data, por exemplo,
16/10/2008, eu quero adicionar uma função para que seja somado mais um
mês a data.
Existe alguma função para isso?

Eu não posso simplesmente digitar: variavel data = variavel data + 30,
porque em vários casos irá furar, se o mês for diferente de trinta
dias.

Tentei executar o comando: data = data + month(data), mas o progress
soma a data mais a quantidade de dias do mês da data, por exemplo:
data = 16/10/2008.
data = data + month(data) --> 16/10/2008 + 10 = 26/10/2008.

Obrigado

Matheus Antonelli

unread,
Oct 17, 2008, 9:03:11 PM10/17/08
to Progre...@googlegroups.com
Jhonson,

Veja se esse código te atende:

DEFINE VARIABLE dt-data AS DATE        NO-UNDO.
DEFINE VARIABLE i-mes   AS INTEGER     NO-UNDO.
DEFINE VARIABLE l-erro  AS LOGICAL     NO-UNDO.

assign dt-data = 10/17/2008
       i-mes   = month(dt-data) + 1 no-error.

assign dt-data = date(i-mes,
                      day(dt-data),
                      year(dt-data)) no-error.

do while(error-status:error):
    assign dt-data = date(i-mes,
                          day(dt-data) - 1,
                          year(dt-data)) no-error.
end.

MESSAGE dt-data
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

Abraços,

Matheus.
-----------------------------------
FORUM PROGRESS



2008/10/17 jhonson <jonas...@gmail.com>

Arthur Roco

unread,
Oct 17, 2008, 11:40:09 PM10/17/08
to Progre...@googlegroups.com
Se estiver usando a versão 10, utilize o comando add-interval

2008/10/17 Matheus Antonelli <matheus....@gmail.com>



--

Atenciosamente,
Arthur de Oliveira

Jailton Nascimento

unread,
Oct 18, 2008, 7:37:46 AM10/18/08
to Progre...@googlegroups.com
O codigo sugerido anteriormente vai dar erro quando  dt-data for dezembro.
Utilize a seguinte logica:

DEFINE VARIABLE dt-data AS DATE        NO-UNDO.
DEFINE VARIABLE dt-aux AS DATE.

assign dt-data = 10/17/2008
       dt-aux = DATE(MONTH(dt-data),1,YEAR(dt-data)) + 34
       dt-data = DATE(MONTH(dt-aux),DAY(dt-data),YEAR(dt-aux)).

MESSAGE dt-data
    VIEW-AS ALERT-BOX INFO BUTTONS OK.





2008/10/17 Arthur Roco <arthur...@gmail.com>



--
Att,
Jailton
ZFLEX SOLUÇÕES
jailton.n...@gmail.com
8231-3884

Arthur Roco

unread,
Oct 20, 2008, 6:40:04 AM10/20/08
to Progre...@googlegroups.com
Como disse anteriormente !

Toda a qualquer versão superior ou igual ao 10, pode-se usar o ADD-INTERVAL, como no exemplo abaixo.

MESSAGE ADD-INTERVAL(TODAY,1,"MONTHS") VIEW-AS ALERT-BOX INFO BUTTONS OK.


2008/10/18 Jailton Nascimento <jailton.n...@gmail.com>

jhonson

unread,
Oct 22, 2008, 7:03:39 PM10/22/08
to Progress - 4GL
Valeu moçada... muito obrigado pelas dicas

On 20 out, 07:40, "Arthur Roco" <arthur.vie...@gmail.com> wrote:
> Como disse anteriormente !
>
> Toda a qualquer versão superior ou igual ao 10, pode-se usar o ADD-INTERVAL,
> como no exemplo abaixo.
>
> MESSAGE ADD-INTERVAL(TODAY,1,"MONTHS") VIEW-AS ALERT-BOX INFO BUTTONS OK.
>
> 2008/10/18 Jailton Nascimento <jailton.nascime...@gmail.com>
>
>
>
>
>
> > O codigo sugerido anteriormente vai dar erro quando  dt-data for dezembro.Utilize
> > a seguinte logica:
>
> > DEFINE VARIABLE dt-data AS DATE        NO-UNDO.
> > DEFINE VARIABLE dt-aux AS DATE.
>
> > assign dt-data = 10/17/2008
> >        dt-aux = DATE(MONTH(dt-data),1,YEAR(dt-data)) + 34
> >        dt-data = DATE(MONTH(dt-aux),DAY(dt-data),YEAR(dt-aux)).
>
> > MESSAGE dt-data
> >     VIEW-AS ALERT-BOX INFO BUTTONS OK.
>
> > 2008/10/17 Arthur Roco <arthur.vie...@gmail.com>
>
> >> Se estiver usando a versão 10, utilize o comando add-interval
>
> >> 2008/10/17 Matheus Antonelli <matheus.antone...@gmail.com>
>
> >> Jhonson,
> >>> Veja se esse código te atende:
>
> >>> DEFINE VARIABLE dt-data AS DATE        NO-UNDO.
> >>> DEFINE VARIABLE i-mes   AS INTEGER     NO-UNDO.
> >>> DEFINE VARIABLE l-erro  AS LOGICAL     NO-UNDO.
>
> >>> assign dt-data = 10/17/2008
> >>>        i-mes   = month(dt-data) + 1 no-error.
>
> >>> assign dt-data = date(i-mes,
> >>>                       day(dt-data),
> >>>                       year(dt-data)) no-error.
>
> >>> do while(error-status:error):
> >>>     assign dt-data = date(i-mes,
> >>>                           day(dt-data) - 1,
> >>>                           year(dt-data)) no-error.
> >>> end.
>
> >>> MESSAGE dt-data
> >>>     VIEW-AS ALERT-BOX INFO BUTTONS OK.
>
> >>> Abraços,
>
> >>> Matheus.
> >>> -----------------------------------
> >>>http://www.progresszone.com.br/
> >>> FORUM PROGRESS
>
> >>> 2008/10/17 jhonson <jonas.ne...@gmail.com>
>
> >>>> Se eu quiser adicionar um mês em um campo data, por exemplo,
> >>>> 16/10/2008, eu quero adicionar uma função para que seja somado mais um
> >>>> mês a data.
> >>>> Existe alguma função para isso?
>
> >>>> Eu não posso simplesmente digitar: variavel data = variavel data + 30,
> >>>> porque em vários casos irá furar, se o mês for diferente de trinta
> >>>> dias.
>
> >>>> Tentei executar o comando: data = data + month(data), mas o progress
> >>>> soma a data mais a quantidade de dias do mês da data, por exemplo:
> >>>> data = 16/10/2008.
> >>>> data = data + month(data) --> 16/10/2008 + 10 = 26/10/2008.
>
> >>>> Obrigado
>
> >> --
>
> >> Atenciosamente,
> >> Arthur de Oliveira
>
> > --
> > Att,
> > Jailton
> > ZFLEX SOLUÇÕES
> > jailton.nascime...@gmail.com
> > 8231-3884
>
> --
>
> Atenciosamente,
> Arthur de Oliveira- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -
Reply all
Reply to author
Forward
0 new messages