Progress - Ayuda Saber semana del año actual con progress

   
Vista:

Ayuda Saber semana del año actual con progress

Publicado por Osvaldo (3 intervenciones) el 07/05/2014 19:12:18
Alguien sabe de alguna funcion o procedimiento de como sacar mediante una fecha en especifico el numero de semana del año algo asi como la funcion weekday() que te da el numero del dia de la semana de x fecha

agradesco de antemano su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda Saber semana del año actual con progress

Publicado por Maro rmanya@maroconsultores.es (4 intervenciones) el 13/06/2014 19:09:39
display weekday(today).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Saber semana del año actual con progress

Publicado por Marco (5 intervenciones) el 14/06/2014 08:26:37
No Maro. El pregunta por la semana del año, no por el día de la semana.
Osvaldo, no existe función, tienes que escribir la tuya propia.

Realmente es simple:
De acuerdo a la Wikipedia, las siguientes son maneras equivalentes de definir cuál es la primera semana del año.
1 • La semana con el primer jueves del año.
2 • La semana con el lunes más cercano al 1º de enero.
3 • La semana con el primer día laborable (considerando que el sábado, el domingo y el 1º de enero no se trabaja).
4 • La semana que incluye al 4 de enero.
5 • La primera semana con cuatro o más de sus días en el año que empieza.
6 • La semana que incluye al lunes del período del 29 de diciembre al 4 de enero.
7 • La semana que incluye al jueves del período del 1º de enero al 7 de enero.
8 • Si el 1º de enero cae lunes, martes, miércoles o jueves, está en la semana 1. Si el 1º de enero cae en viernes, sábado o domingo, está en la semana 52 o 53 del año anterior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Saber semana del año actual con progress

Publicado por MAro rmanya@maroconsultores.es (4 intervenciones) el 19/06/2014 18:09:45
Disculpar por retrasarme en la respuesta, pero esto quizás te ayude:

define var Fecha_en_la_que_me_Encuentro as date.
define var ano as integer.
define var semana_del_ano as integer.


update Fecha_en_la_que_me_Encuentro format "99/99/9999".

define var dia as integer.
define var mes as integer.
define var anyo as integer.
define var vEnero as date.
define var vEneroAnt as date.
define var vEneroSig as date.

define var Dia_de_semana__del_anovEnero as integer.
define var Dia_de_semana__del_anovEneroAnt as integer.
define var Dia_de_semana__del_anovEneroSig as integer.


define var vDia1semana_del_ano as date.
define var vDia1semana_del_anoAnt as date.
define var vDia1semana_del_anoSig as date.


define var vDiaUltsemana_del_ano as date.
define var vDiaUltsemana_del_anoAnt as date.
define var vDiaUltsemana_del_anoSig as date.

assign dia = day(Fecha_en_la_que_me_Encuentro)
mes = month(Fecha_en_la_que_me_Encuentro)
anyo = year(Fecha_en_la_que_me_Encuentro).


assign vEnero = date ( 1 , 1 , anyo ).
assign Dia_de_semana__del_anovEnero = weekday(vEnero) - 1.

if Dia_de_semana__del_anovEnero = 0 then Dia_de_semana__del_anovEnero = 7.

if Dia_de_semana__del_anovEnero = 6 or Dia_de_semana__del_anovEnero = 7 or Dia_de_semana__del_anovEnero = 5 then
do:
vDia1semana_del_ano = vEnero + ( 8 - Dia_de_semana__del_anovEnero ).
end.
else
do:
vDia1semana_del_ano = vEnero - ( Dia_de_semana__del_anovEnero - 1 ).
end.

assign vEneroSig = date ( 1 , 1 , anyo + 1 ).
assign Dia_de_semana__del_anovEneroSig = weekday(vEneroSig) - 1.

if Dia_de_semana__del_anovEneroSig = 0 then Dia_de_semana__del_anovEneroSig = 7.

if Dia_de_semana__del_anovEneroSig = 6 or Dia_de_semana__del_anovEneroSig = 7 or Dia_de_semana__del_anovEneroSig = 5 then
do:
vDia1semana_del_anoSig = vEneroSig + ( 8 - Dia_de_semana__del_anovEneroSig ).
end.
else
do:
vDia1semana_del_anoSig = vEneroSig - ( Dia_de_semana__del_anovEneroSig - 1 ).
end.

assign vEneroAnt = date ( 1 , 1 , anyo - 1 ).
assign Dia_de_semana__del_anovEneroAnt = weekday(vEneroAnt) - 1.

if Dia_de_semana__del_anovEneroAnt = 0 then Dia_de_semana__del_anovEneroAnt = 7.

if Dia_de_semana__del_anovEneroAnt = 6 or Dia_de_semana__del_anovEneroAnt = 7 or Dia_de_semana__del_anovEneroAnt = 5 then
do:
vDia1semana_del_anoAnt = vEneroAnt + ( 8 - Dia_de_semana__del_anovEneroAnt ).
end.
else do:
vDia1semana_del_anoAnt = vEneroAnt - ( Dia_de_semana__del_anovEneroAnt - 1 ).
end.

assign vDiaUltsemana_del_ano = vDia1semana_del_anoSig - 7.
assign vDiaUltsemana_del_anoAnt = vDia1semana_del_ano - 7.

if Fecha_en_la_que_me_Encuentro < vDia1semana_del_ano then
do:
ano = anyo - 1.
semana_del_ano = truncate(( Fecha_en_la_que_me_Encuentro - vDia1semana_del_anoAnt ) / 7 ,0) + 1.
end.

if Fecha_en_la_que_me_Encuentro >= vDia1semana_del_ano and Fecha_en_la_que_me_Encuentro <= vDiaUltsemana_del_ano + 6 then
do:
ano = anyo.
semana_del_ano = truncate (( Fecha_en_la_que_me_Encuentro - vDia1semana_del_ano ) / 7 ,0) + 1.
end.

if Fecha_en_la_que_me_Encuentro >= vDia1semana_del_anoSig then
do:
ano = anyo + 1.
semana_del_ano = truncate( ( Fecha_en_la_que_me_Encuentro - vDia1semana_del_anoSig ) / 7 ,0) + 1.
end.


display semana_del_ano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Saber semana del año actual con progress

Publicado por Anna (1 intervención) el 03/03/2016 14:09:38
En el ejemplo anterior, el dia 1 de enero lo da como semana 53, no como semana 1.

Yo lo hago así:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def var v-dia11 as date.
DEF var v-fecha as date initial today.
def var v-diass as INTEGER.
DEF VAR v-numse AS DECIMAL.
 
 
 
UPDATE v-fecha.
 
 
/*---CONSIDERANDO QUE LA SEMANA EMPIEZA EN UN LUNES Y ACABA EN UN DOMINGO---*/
/*---Obtener primer dia del any de la fecha a saber la semana---*/
v-dia11 = DATE(1,1,YEAR(v-fecha)).
/*---Obtener dias transcurridos desde principio de any hasta la fecha a convertir---*/
v-diass = v-fecha - v-dia11 + 1.
/*---Anyadir dias necesarios para completar la primera semana---*/
IF WEEKDAY(v-dia11) = 1 THEN v-diass = v-diass + 6. /* si dia 01/01 es domingo */
IF WEEKDAY(v-dia11) = 2 THEN v-diass = v-diass + 0. /* si dia 01/01 es lunes */
IF WEEKDAY(v-dia11) = 3 THEN v-diass = v-diass + 1. /* si dia 01/01 es martes */
IF WEEKDAY(v-dia11) = 4 THEN v-diass = v-diass + 2. /* si dia 01/01 es miercoles */
IF WEEKDAY(v-dia11) = 5 THEN v-diass = v-diass + 3. /* si dia 01/01 es jueves */
IF WEEKDAY(v-dia11) = 6 THEN v-diass = v-diass + 4. /* si dia 01/01 es viernes */
IF WEEKDAY(v-dia11) = 7 THEN v-diass = v-diass + 5. /* si dia 01/01 es sabado */
 
v-numse = v-diass / 7.
 
IF TRUNCATE(v-numse,0) <> v-numse THEN v-numse = TRUNCATE(v-numse,0) + 1.
 
 
DISPLAY v-fecha v-dia11 v-diass v-numse.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Saber semana del año actual con progress

Publicado por Mario (31 intervenciones) el 04/03/2016 02:44:12
Tu seccion de /*---Anyadir dias necesarios para completar la primera semana---*/ la puedes simplificar en:

IF WEEKDAY(v-dia11) = 1 THEN v-diass = v-diass + 6. /* si dia 01/01 es domingo */
ELSE v-diass = v-diass + WEEKDAY(v-dia11) - 2. /* de lunes a domingo le restamos 2 al weekday*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar