Consulta de datos por semana en Visual Basic

Soy nuevo en Visual Basic, y necesito lo siguiente:
Tengo un archivo donde los datos están por fecha en excel, estos los exporto a access para mejor manejo, el caso es que quiero preparar un programa donde yo pueda traer los datos pertenecientes a cada semana.
/
Ej. Si la semana 1 comienza
Lunes y la fecha es 04/01/2010 y los demás días de esa semana son: 185 .. 23%
Martes ..... 05/01/2010 ..... 500 .. 15% .. Etc
Miercoles . 06/01/2010 ..... 300 .. 18% .. Etc
Jueves ..... 07/01/2010 ..... 150 .. 5 % .. Etc
Viernes .... 08/01/2010 ..... 350 .. 12% .. Etc
Sabado .... 09/01/2010 ..... 250 .. 13% .. Etc
Domingo .. 10/01/2010 ..... 550 .. 14% .. Etc
/
Entonces, en el archivo están en ese mismo orden, quiero hacer un consulta en donde cuando seleccione el numero de la semana me traiga, los datos o mejor aun que se pueda sacar por Día, por Semana y por Mes, cuando digo el día me refiero no a la fecha sino "Lunes, Martes, Miércoles, ..., Etc", y si quiero saber que movimiento hubo cada lunes de cada Mes o cada Semana o del Año. He estado leyendo que se puede hacer con DatePart pero solo traer el dato de que semana es indicando solo una fecha, me imagino que la única forma es que cuando lea el archivo que haga la consulta para que cuando lo traiga identifique la fecha para saber que semana o algo por el estilo, pero aun no estoy muy claro que el asunto de manejar la fecha.
/
No se es mucho pero es lo que necesito, ya que me toca manejar esa información y es mucha para manejarla en excel y es más fácil en access con Visual Basic.
/
Agradeciendo de ante mano tu ayuda.
/
Enrique Hernández

2 Respuestas

Respuesta
1
Primero, en ves de Access podrías pasarlo a SQL o MySQL entonces se potenciaría el uso, ambas versiones tienen versiones gratuitas que te sirven mucho incluso para trabajarla con el usuario.
Segundo, el trabajo con las fechas es algo complicado pero tampoco me das muy claro tu requerimiento, te voy a dejar algunos links de como trabajar con fechas desde VB.
Ejemplo 1:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/134-funciones-calcular-fecha.htm
Ejemplo 2:
http://www.elguille.info/colabora/puntoNET/AlexTaya_InterDateTime.htm
SQL Express (Versión Gratuita):
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=220549b5-0b07-4448-8848-dcc397514b41
Si tienes dudas me lo haces saber.
Ok vamos a poner un ejemplo más fácil
/
La semana 1 de esta año que comprende desde Lunes hasta el Domingo comienza en fecha 04/01/2010 bien Ok. Tengo los siguientes datos:
/
04/01/10 ... 05/01/10 ... 06/01/10 ... 07/01/10 ... 08/01/10 ... 09/01/10 ... 10/01/10
/
..... 15 ........... 12 .............. 24 .............. 02 .............. 21 .............. 18 ............. 16
/
Semana 2
/
11/01/10 ... 12/01/10 ... 13/01/10 ... 14/01/10 ... 15/01/10 ... 16/01/10 ... 17/01/10
/
..... 03 ........... 20 .............. 8 ................ 26 ................ 17 ............ 19 ............. 29
/
Semana 3
/
18/01/10 ... 19/01/10 ... 20/01/10 ... 21/01/10 ... 22/01/10 ... 23/01/10 ... 24/01/10
/
..... 06 ........... 14 .............. 11 .............. 23 .............. 14 ............. 23 .............. 22
/
Y Así sucesivamente o sea estos datos se registran en un sistema independiente el cual no tengo acceso para sacarlo de la base de datos que me seria mucho más fácil, entonces esto se puede exportar solamente a Excel, yo por mi parte lo exporto a Access por que es más manejable, ahora bien como los datos que descargue los subo a Access se van agregando a la tabla. Estos datos se deben de manipular por Día, por Semana, por Mes y si es posible hasta por hora, pero sino con que se maneje la otra parte la hora por el momento no es indispensable, yo no se como hacer una consulta tomando en cuenta que fecha es cada semana del año comprendida de Lunes a Domingo, o menos que se ponga algún contador o algo que cuente los registros los sume y los divida entre 7 tomando en cuenta a partir de que día seria la 1era Semana o algo así y me despliegue los días que comprendan esa semana con sus valores, ya lo del mes y el ano es cuestión de una consulta por fecha para sacar los datos mensuales y anuales.
/
Espero haber sido más claro con esta explicación cualquier otra cosa me avisas
Te conseguí unos ejemplos que te dejo más abajo, la idea es que si te elijen una fecha sepas a que día de la semana es por ejemplo si te elijen el 07/09/2010 sepas que es Martes, al saber que es martes le puedes restar 1 para saber la fecha del lunes (o le restas tantos como sea para llegar a Lunes) y ya podrás hacer tu rango.
Otra forma es de la fecha base saber a que semana pertenece del año, al saber la semana, saber en que fecha empieza y termina esa semana.
En ambos casos, tendrás un rango de fechas donde hacer un BETWEEN en el SELECT para traer la información.
Cómo: Extraer el día de la semana de una fecha concreta:
http://msdn.microsoft.com/es-es/library/bb762911.aspx
Obtener mes y día en base a semana y año:
http://www.canalvisualbasic.net/foro/visual-basic-6-0/obtener-mes-y-dia-en-base-semana-y-ano-10968/
Una forma fácil de obtener la semana podría ser así:
Dim week As int = System.DateTime.Now.DayOfYear / 7;
Si tienes dudas me lo haces saber.
Disculpa experto esta muy bien lo que planteas pero lo que quiero es que desde que indique el numero de la semana (Ej. S1, S2, S3, S4, ..., S52) me traiga los 7 días (llámese las fechas) con los datos que tenga registrados en la tabla para hacer la consulta, por que esa es la parte difícil que nunca he trabajado con algo así, se hacer consultas por rango de fechas que esto me sirve para la consulta por mes y por año, pero no para las semanas del año.
Hay alguna manera que conozcas o hay que desarrollarlo por completo
Con lo que te di ya puedes saber el rango de fechas, solo debes leerlo un poco y analizarlo, es ahí donde está el trabajo del programador.
Para hacer una consulta entre fechas usas la clausula BETWEEN de SQL
Aprende más de BETWEEN
http://msdn.microsoft.com/es-es/library/ms187922.aspx
Aún cuando estemos trabajando con Access, podrás hacer una consulta así:
Select CAMPOS From TABLA BETWEEN Fecha1 AND Fecha2
Obviamente, CAMPOS refiere a los campos que traerá el SELECT, TABLA refiere a la tabla que contiene los datos, y Fecha1 y Fecha2, refieren al rango de fecha que obtuvistes de la semana que corresponde a la fecha.
Si lo analizas un poco verás que ya tienes todo, te dejo unos links para saber como trabajar con SELECT (para aplicarlo a Acccess) y como llamarlo desde VB.NET
Links para SELECT:
http://msdn.microsoft.com/es-es/library/ms189499.aspx
http://msdn.microsoft.com/es-es/library/ms187731.aspx
Cómo conectar a Access desde VB
http://www.connectionstrings.com/access
Cómo trabajar con la base de datos desde VB
http://www.elguille.info/NET/ADONET/cuando_usar_ExecuteNonQuery_o_ExecuteScalar.htm
Estoy para ayudarte, pero recuerda que debes lograr tu el objetivo, yo soy una guía y te doy ideas, más no la solución definitiva a tu programa, con lo que te provisto ya tienes todo como hacer tu consulta, como lograr las fechas que necesitas y como pedirle a Access que te devuelva los datos.
Recuerda que si tienes dudas estoy para ayudarte y me puedes preguntar.
Respuesta
1
Para obtener los datos de la semana:
"Select * From TuTabla Where Fecha >= " & CDate("04/01/2010") & " AND Fecha <= " & CDate("04/07/2010")
Ok vamos a poner un ejemplo más fácil por que no entiendo muy bien lo del CDATE y si este hacer lo que ando buscando.
/
La semana 1 de esta año que comprende desde Lunes hasta el Domingo comienza en fecha 04/01/2010 bien Ok. Tengo los siguientes datos:
/
04/01/10 ... 05/01/10 ... 06/01/10 ... 07/01/10 ... 08/01/10 ... 09/01/10 ... 10/01/10
/
..... 15 ........... 12 .............. 24 .............. 02 .............. 21 .............. 18 ............. 16
/
Semana 2
/
11/01/10 ... 12/01/10 ... 13/01/10 ... 14/01/10 ... 15/01/10 ... 16/01/10 ... 17/01/10
/
..... 03 ........... 20 .............. 8 ................ 26 ................ 17 ............ 19 ............. 29
/
Semana 3
/
18/01/10 ... 19/01/10 ... 20/01/10 ... 21/01/10 ... 22/01/10 ... 23/01/10 ... 24/01/10
/
..... 06 ........... 14 .............. 11 .............. 23 .............. 14 ............. 23 .............. 22
/
Y Así sucesivamente o sea estos datos se registran en un sistema independiente el cual no tengo acceso para sacarlo de la base de datos que me seria mucho más fácil, entonces esto se puede exportar solamente a Excel, yo por mi parte lo exporto a Access por que es más manejable, ahora bien como los datos que descargue los subo a Access se van agregando a la tabla. Estos datos se deben de manipular por Día, por Semana, por Mes y si es posible hasta por hora, pero sino con que se maneje la otra parte la hora por el momento no es indispensable, yo no se como hacer una consulta tomando en cuenta que fecha es cada semana del año comprendida de Lunes a Domingo, o menos que se ponga algún contador o algo que cuente los registros los sume y los divida entre 7 tomando en cuenta a partir de que día seria la 1era Semana o algo así y me despliegue los días que comprendan esa semana con sus valores, ya lo del mes y el ano es cuestión de una consulta por fecha para sacar los datos mensuales y anuales.
/
Espero haber sido más claro con esta explicación cualquier otra cosa me avisas
¿Comohaces la consulta por el numero de la semana o por fecha?
Bueno experto la consulta debería de ser por que no se como hacerla es, desde que indique el numero de la semana (Ej. S1, S2, S3, S4, ..., S52) me traiga los 7 días (llámese las fechas) con los datos que tenga registrados en la tabla para hacer la consulta, por que esa es la parte difícil que nunca he trabajado con algo así, se hacer consultas por rango de fechas que esto me sirve para la consulta por mes y por año, pero no para las semanas del año.
Hay alguna manera que conozcas o hay que desarrollarlo por completo.?
Crea una tabla, que tenga los campos que necesitas, semana y por ese campo haces la búsqueda, y ademas de la semana le coloca las fechas que forman cada semana
Gracias por tu respuesta y disculpa que no te había contestado pero lo que pasa es que cada año la semana no es la misma eso va rotando los días, ademas, si yo como usuario quiero la semana 13 del año (o sea, S13) entonces, yo no se cual es la 13 ava semana del año a menos que me ponga a buscarla para indicar la fecha, y la consulta que yo quiero hacer es que vamos a suponer que yo tengo el registro de datos del año 2010 el año esta comprendido desde el día 01/01/2010 y termina el 31/12/2010 verdad, que pasa la semana 1 (o sea, S1) el año comenzó el día 04/01/2010 y termino 10/01/2010 si yo le hago un between con un select, me imagino que debe de ser indicando la fecha inicial del año y con la fecha final del año y que ella me determine sola que rango de fecha corresponde a cada semana.
/
O para hacerlo de otra forma que cuando introduzca la fecha ella me arroje el numero de la semana, solo introduciendo la fecha en que voy a trabajar, las semanas del año pueden ser S52 o S53 semanas yo puedo tener un datacombo que se alimente de una tabla donde tenga las semanas o lo puedo tener interno en código los números de la semana y que ella me determine la semana y lo despliegue en un Label o hasta en un textbox, o sea, yo tengo la idea muy linda y perfecta de hacerlo pero de plasmarlo en código no tengo la idea completamente y necesito de que me orienten.
/
Si le es posible encaminarme un poco se lo agradecería inmensamente, por que me interesa aprender pero si no tengo la clase no puede hacer la tarea.
Gracias
A la tabla que almacena las semanas le agregas una columna del año
Semana, Anio, fecha inicial, fecha final
Si haces la búsqueda por fechas la tienes, si haces la búsqueda por semana la tienes, es hacer un select sobre esta tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas