Principales respuestas
Duda con gridview y calendar de asp.net

Pregunta
-
Hola mi duda es la siguiente, desearia poder mostrar los registros almacenados en la bd en un gridview pasandole como parametro la semana que seleciono en un calendar, el problema es que aunque le habilito a mi calendar el modo de seleccion dayweek, el gridview solo me muestra los registros almacenados con la fecha de inicio de semana (es decir el primer dia de la semana ) seleccionada y no me trae los dias que estan dentro del lapso de la semana, en mi base de datos guardo el inicio y el fin de semana con dos calendar diferentes. Agradeceria si alguien me puede ayudar a esclarecer la duda o si es posible hacer lo que aqui planteo gracias... es asp.net y c#
Respuestas
-
Hola Alondra20,
perdona, es que no entendí bien el último mensaje. Has puesto la consulta en el GridView? Yo me refería a hacer esa consulta en la base de datos (por ejemplo, crearte un StoredProcedure en la base de datos que haga esa consulta y tu, desde tu código llamar al StoredProcedure pasándole el DateTime que has recogido del calendar. Entonces la respuesta que te devuelva el StoredProcedure es la que debes asignar al GridView.
De todas formas, creo que si puedes almacenar en la base de datos la semana (como un int) y el año, te sería más fácil realizar esta búsqueda. Es decir, para identificar una semana, en vez de guardar el primer y el último dia que la forman, es más fácil guardar un campo llamado Semana del tipo int y un campo llamado Año tambien del tipo int. Entonces en el campo Semana guardas el número de semana del año. Por ejemplo, si te dicen la fecha 8/01/2009, gracias a la clase GregorianCalendar, sabes que corresponde con la semana 2 del año 2009, por lo que la consulta a tu base de datos es mucho más fácil:
select *
from TuTabla
Where Semana=2 and Año=2009
y ya te devolvería todos los registros almacenados para esa semana.
Pero si no puedes cambiar la tabla de la base de datos, creo que debería funcionar. Si quieres, muestra cómo es la estrucutra de esa tabla (que campos tienen y como se llaman) y cómo haces la consulta que rellena el GridView y te ayudaremos encantados!
En caso de que la respuesta te sirva, porfavor, márcala como válida
Muchas gracias y suerte!
Javier Jiménez Roda
MCP (Microsoft Certified Professional)
MCTS (Microsoft Certified Technology Specialist)
MCPD (Microsoft Certified Professional Developer)
Blog: http://jimenezroda.wordpress.com- Propuesto como respuesta Javier Jiménez Roda miércoles, 9 de septiembre de 2009 20:20
- Marcado como respuesta Marc RubiñoModerator viernes, 16 de abril de 2010 11:03
Todas las respuestas
-
Hola Alondra20,
Has probado a utilizar la clase GregorianCalendar? Esta clase dispone de un método llamado GetWeekOfYear al que le pasas un objeto DateTime (supongo que este objeto ya lo consigues mediante el Calendar) y te devuelve el número de la semana que corresponde al año, es decir, si le pasas la fecha 5/01/2009, te devuelve un 1 indicando que esta fecha pertenece a la primera semana del año 2009.
No he acabado de entender cómo guardas la semana en tu base de datos. Te refieres a que guardas el primer y el último dia de la semana? si es así, con una consulta del tipo:
select *
from TuTabla
where @parametroFechaSeleccionadaEnCalendar between campo_fecha_inicio_semana and campo_fecha_fin_semana
En caso de que la respuesta te sirva, porfavor, márcala como válida
Muchas gracias y suerte!
Javier Jiménez Roda
MCP (Microsoft Certified Professional)
MCTS (Microsoft Certified Technology Specialist)
MCPD (Microsoft Certified Professional Developer)
Blog: http://jimenezroda.wordpress.com- Propuesto como respuesta Javier Jiménez Roda miércoles, 26 de agosto de 2009 7:24
-
Gracias Javier
No he probado esa clase de hecho no sabia que existiera :( (GregorianCalendar) y efectivamente tengo guardado el primer y el ultimo dia de la semana en la bd y he intentado poner la consulta en la manera que me dices en mi gridview,solo que intento pasar estos valores se los paso a y traves de cajas de texto al gridview pero no me queda, me marca error, de cualquier modo intentare uitlizar GregorianCalendar muchas gracias por responder. -
Hola Alondra20,
perdona, es que no entendí bien el último mensaje. Has puesto la consulta en el GridView? Yo me refería a hacer esa consulta en la base de datos (por ejemplo, crearte un StoredProcedure en la base de datos que haga esa consulta y tu, desde tu código llamar al StoredProcedure pasándole el DateTime que has recogido del calendar. Entonces la respuesta que te devuelva el StoredProcedure es la que debes asignar al GridView.
De todas formas, creo que si puedes almacenar en la base de datos la semana (como un int) y el año, te sería más fácil realizar esta búsqueda. Es decir, para identificar una semana, en vez de guardar el primer y el último dia que la forman, es más fácil guardar un campo llamado Semana del tipo int y un campo llamado Año tambien del tipo int. Entonces en el campo Semana guardas el número de semana del año. Por ejemplo, si te dicen la fecha 8/01/2009, gracias a la clase GregorianCalendar, sabes que corresponde con la semana 2 del año 2009, por lo que la consulta a tu base de datos es mucho más fácil:
select *
from TuTabla
Where Semana=2 and Año=2009
y ya te devolvería todos los registros almacenados para esa semana.
Pero si no puedes cambiar la tabla de la base de datos, creo que debería funcionar. Si quieres, muestra cómo es la estrucutra de esa tabla (que campos tienen y como se llaman) y cómo haces la consulta que rellena el GridView y te ayudaremos encantados!
En caso de que la respuesta te sirva, porfavor, márcala como válida
Muchas gracias y suerte!
Javier Jiménez Roda
MCP (Microsoft Certified Professional)
MCTS (Microsoft Certified Technology Specialist)
MCPD (Microsoft Certified Professional Developer)
Blog: http://jimenezroda.wordpress.com- Propuesto como respuesta Javier Jiménez Roda miércoles, 9 de septiembre de 2009 20:20
- Marcado como respuesta Marc RubiñoModerator viernes, 16 de abril de 2010 11:03
-
Hola, ya pude hacer mi seleccion de un periodo de fecha desde el gridview de hecho la consultaen efecto es la siguiente
SELECT AREA,LOCALIDAD, OBSERVACIONES FROM [forma0] where fech_inicio between @fech_inicio and @fecha_termino and area= @area y me hace la consulta y todo pero ahora el problema es que cuando intento eliminar o modificar desde mi gridview me marca un error y me dice que debo declarar la variable area y ya no se que hacer??? alguna sugerencia??? -
Hola Alondra20,
puedes mostrar cómo haces para eliminar el registro. El error indica que estás utilizando la variable @area en la consulta, pero no la has declarado. Si estás utilizando un StoredProcedure, recuerda que primero debes declarar la variable con la directiva declare, tal que así:declare
@area varchar
set @area='tu_area'o bien definir el parámetro de entrada en el StoredProcedure, tal que así:
PROCEDURE MiProcedure(@area varchar = 'p')Si, por contra, estás utilizando una consulta utilizando ADO.NET (un objeto connection, un objeto command, etc..),
debes sustituir el @area por el valor del area a eliminar o modificar. Es decir, en tu consulta no puedes tener esto:
UPDATE [forma0] Set Observaciones = 'alguna observación' Where Area=@areadebes definir la variable @area. Para ello, añade un parámetro a la consulta. Debes utilizar el objeto SqlParameter, OdbcParameter, OleDbParameter (cualquiera de estos en función del proveedor que utilices). Sería algo así:
string area = "miarea";using (SqlConnection con = new SqlConnection(""))
{
SqlCommand com = con.CreateCommand();
SqlParameter param = new SqlParameter("area", SqlDbType.VarChar);
com.Parameters.Add(com);
param.Value = area;
}
En caso de que la respuesta te sirva, porfavor, márcala como válida
Muchas gracias y suerte!
Javier Jiménez Roda
MCP (Microsoft Certified Professional)
MCTS (Microsoft Certified Technology Specialist)
MCPD (Microsoft Certified Professional Developer)
Blog: http://jimenezroda.wordpress.com- Propuesto como respuesta Javier Jiménez Roda miércoles, 9 de septiembre de 2009 20:20