Cambiar la semana de inicio del año en Microsoft Access

Cambiar la semana de inicio del año en Microsoft Access

Estoy usando una consulta de Access para capturar la cantidad de artículos específicos pedidos por semana en Microsoft Access. Mi conjunto de datos abarca desde el 1 de junio de 2018 hasta el 31 de mayo de 2019. Agregué una columna para extraer el número de semana de cada fecha de pedido correspondiente y funciona bien siempre que comience con la primera semana de un año calendario (primera semana de enero) utilizando la siguiente expresión en el campo de consulta:

Week No: DatePart("ww",[date],1,1)

Mi problema es que quiero que la semana del 1 de junio de 2018 se muestre como la primera semana del año y continúe cronológicamente (con la semana 53 correspondiente a la última semana de mayo de 2019). El 1 de junio de 2018 cae dentro de la semana 22 del año calendario, por lo que modifiqué la expresión a esta:

Week No: DatePart("ww",[date],1,22)

Sin embargo, ahora recibo un error "#func" en el campo para todas las filas.

¿Hay alguna forma de editar esta expresión para que el "año" que estoy viendo siga el patrón del 1 de junio al 31 de mayo y los números de la semana reflejen esto?

Respuesta1

El finalfirstweekofyearargumento para elDatePartLa función solo aceptará una de cuatro enumeraciones:

  • vbUseSystem (0) Utilice la configuración de API NLS.
  • vbFirstJan1 (1) Comience con la semana en la que ocurre el 1 de enero (predeterminado).
  • vbFirstFourDays (2) Comience con la primera semana que tenga al menos cuatro días en el nuevo año.
  • vbFirstFullWeek (3) Comience con la primera semana completa del año.

Como tal, proporcionar a este argumento un valor de 22dará como resultado un error.


Dado que el año definido como del 1 de junio de 2018 al 31 de mayo de 2019 se compensa con el año calendario en 151 días, deberá compensar sus cálculos con esta cantidad.

Por tanto, el cálculo queda como:

Week No: datepart("ww",datevalue([date])-151)

Por ejemplo:

?datepart("ww",#2018-06-01#-151)
 1 
?datepart("ww",#2018-07-01#-151)
 5 
?datepart("ww",#2019-04-01#-151)
 44 
?datepart("ww",#2019-05-31#-151)
 53 

Para preparar la expresión para años futuros, es posible que también desee calcular el desplazamiento sobre la marcha (ya que puede que no siempre sea 151 dado que algunos años serán bisiestos).

Para lograr esto, puede utilizar la siguiente expresión:

Week No: datepart("ww",datevalue([date])-(dateserial(year(date())-iif(month(date())<6,1,0),6,1)-dateserial(year(date())-iif(month(date())<6,1,0),1,1)))

información relacionada