Visual Basic - Dias de una semana

Life is soft - evento anual de software empresarial
 
Vista:

Dias de una semana

Publicado por Juan luis (3 intervenciones) el 19/02/2008 04:45:25
Hola todos, muy buenas nochs....mi problema es el siguiente.....en la empresa donde trabajo usamos un sistema de punto de venta el cual muestra las ventas por semana de algun producto en especial.....lo que yo necesito es una funcion o algun proceso que me calcule a partir de una fecha dada, en primer lugar el numero de semana y despues el rango de dias que comprende esa semana, es decir, de que dia a que dia abarca o abarco esa semana.

el detalle que tengo es que he probado algunas funciones o codigos que encuentro en internet......pero todos asumen como primer semana del año la del 1 de enero....pero por ejmplo en el sistema de punto de venta el dia 29 de enero de 2008 pertenece a la semana 4 del 2008...como es esto.....pues bien esto se debe a que para el sistema de punto de venta la semana1 empieza en el primer domingo del año 2008.

yo al hacer el mismo calculo con el mismo dia (29 de enero de 2008) me dice que es la semana 5 ( y no la 4) y al querer obtenr el rango de dias no me coincide, ya que la semana que yo quiero es del 27 de enero al 2 de febrero del 2008....y obtengo un rango totalmente diferente.

si alguien me puede a ayudar para entender o poder hacer lo que necesito...se lo agradeceria bastante........espeo haber saido explicarme.....y disculpen lo extenso de la explicacion.
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

RE:Dias de una semana

Publicado por Pedro Luis (878 intervenciones) el 20/02/2008 10:17:20
Format(expresión[, formato[, primerdíadesemana[, primerdíadeaño]]])

vbUseSystem 0 Utiliza el valor de API NLS.
vbFirstJan1 1 Comienza con la semana donde está el 1 de enero (predeterminado).
vbFirstFourDays 2 Comienza con la primera semana del año que tenga cuatro días como mínimo.
vbFirstFullWeek 3 Comienza con la primera semana completa del año.
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

RE:Dias de una semana

Publicado por Antoni Masana (79 intervenciones) el 20/02/2008 10:17:34
Buenas Juan Luis:

Yo utilizo un sistema para saber la semana a la que corresponde una fecha pero en mi caso hoy seria por ejemplo la semana 453.

Resto a la fecha actual la del 01.01.2001 ( por que era lunes y tampoco tengo que tratar fechas anteriores) , el numero resultante lo divido entre 7 y redondeo al alza.

En tu caso, si entiendo bien, hoy deberia ser la semana 8 (segun mi calendario de sobre mesa)

Para ello debes decidir cuando empieza la semana 1 y como cuentas las semanas (de lunes a domingo o de domingo a sabado o etc...).

Un ejemplo

Sumpongamos que contamos una semana de lunes a domingo.

Pregunta ¿El 1 de enero corresponde a la semana 1 independientemente de que dia de la semana es?

Si la respuesta es SI la soluncion es tomar el fecha del 1 de enero del año en curso retroceder un día hasta encontrar un domingo.

Tomar esa fecha como fecha inicial (ejemplo 30/12/2008) y restar a la fecha actual la fecha inicial. El resultado dividirlo entre 7 y redondear al alza. y ya tienes la semana del año

Si respuesta es NO entonces debes modificar el calculo de la fecha inicial en función de tu necesidad.

En este ejemplo da como semana 8 los dias del 18 al 24 de febrero del 2008:

Private Sub Command1_Click()
Print Int((((#2/18/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/19/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/20/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/21/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/22/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/23/2008# - #12/30/2007#)) / 7) + 0.99)
Print Int((((#2/24/2008# - #12/30/2007#)) / 7) + 0.99)
End Sub

Si tienes sigues teniendo problemas para calcular la semana, escribe y te cuento más

Un saludo desde Barcelona
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

RE:Dias de una semana

Publicado por Antoni Masana (79 intervenciones) el 20/02/2008 10:33:28
Despues de una seguna lectura de tu nota rectifico

Como en tu caso la semana 1 empieza el domingo.

Toma la fecha del 1 de enero y busca el primer domingo del año. Resta un dia para buscar el dia anterior. Divide y redondea y ya lo tienes

Aqui un ejemplo:

Private Sub Command2_Click()
Dim Inicio As Date, Dia As Date

Inicio = "01/01/" & Year(Date)

While Weekday(Inicio) <> 1 'Busca el primer Domingo del año
Inicio = Inicio + 1
Wend
Inicio = Inicio - 1 ' Busca el sabado anterior

For a = 17 To 23 ' Calcula la semana del 17/02/2008 al 23/02/2008
Dia = a & "/02/2008"
Print "Fecha: " & Dia & " - Semana: " & Int(((Dia - Inicio) / 7) + 0.99)
Next
End Sub
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

RE:Dias de una semana

Publicado por Juan Luis (2 intervenciones) el 23/02/2008 16:48:39
Hola......muchas gracias por la ayuda brindad......me sirvio de mucho para resolver mi problema.
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