Semana segun dia en access

Tengo una base de datos access, donde un campo numero de semana, para sacarlo es fácil, uso =Formato([FECHA TRANSITO],"Ww")-1, eso esta bien, solo que ahora se van a tomar la semana de miércoles a martes, es decir el día de hoy lunes 4 y martes 5 de abril correspondería a la semana anterior (13) y no a la actual (14), lo intente de esta manera solo que no me funciona, me devuelve el miércoles la semana anterior y el lunes la semana actual:
Private Sub FECHA_TRANSITO_AFTERUPDATE()
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Miércoles" Then Me.SEMANA = [Texto144]
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Martes" Then Me.SEMANA = [Texto144] - 1
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Lunes" Then Me.SEMANA = [Texto144] - 1
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Jueves" Then Me.SEMANA = [Texto144]
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Viernes" Then Me.SEMANA = [Texto144]
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Sábado" Then Me.SEMANA = [Texto144]
If WeekdayName(Weekday([FECHA TRANSITO]) - 1) = "Domingo" Then Me.SEMANA = [Texto144]
End Sub
(donde [texto144] es la semana actual y [fecha transito] corresponde al dia de hoy)
El resultado ejemplo que yo pretendo seria similar al siguiente tomando la semana actual (14)
Lunes y Martes= 13
Miercoles a sabado = 14

1 Respuesta

Respuesta
1
Si esa convención sólo la vais a asumir para la semana 14, entonces es mejor que el condicional pregunte si el día es lunes o martes y además la semana es la 14, entonces cambias la semana a la 13 y ya está.
No sé si cuando dices ahora se va a tomar es que a partir de ahora... o sólo por esta semana 14.
En esta necesito que las semanas se tomen de miércoles a martes, no de lunes a domingo como comúnmente se tomaría una semana, lo que te puse es un ejemplo ahora estamos en la semana 15 hasta el día martes, es decir del miércoles 6 de abril al martes 12 de abril corresponde a la semana 14, del miércoles 13 de abril al martes 19 corresponde a la semana 15, del miércoles 20 de abril al martes 26 corresponde a la semana 16, y así sucesivamente las 52 semanas.
Espero haberme explicado, gracias.
OK. Hola, la función o el método Weekday tiene dos argumentos. El primero es la fecha y el segundo es el día que quieres considerar el primero de la semana, que en tu caso sería el miércoles.
Weekday (Fecha, primer día de la semana)
Si no escribes el segundo argumento el sistema considera el domingo como el primer día (predeterminado).
También tienes otra función que te puede dar el valor de la semana directamente que se llama DateDiff, cuyos argumentos son:
Intervalo: que es como quieres medir la diferencia entre dos fechas. En tu caso sería en semanas, así que ahí se escribe "ww".
Fecha1 y fecha2: son las dos fechas que vas a restar, en tu caso fecha 1 sería el 01/01/2011 y la fecha2 de aquella que quieres obtener la semana.
Primerdíadesemana: el día que quieres se considere el primero (1), como en tu caso quieres que sea el miércoles pues irá un 4.
Primerasemanaño: en tu caso supongo que considerarás la semana 1 la del primero de enero así que este último argumento sería un 1.
DateDiff(intervalo, fecha1, fecha2, primerdíasemana, primerasemanaaño)
DateDiff("ww", #01/01/2011#, #fecha2#, 4, 1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas