none
Duda con gridview y calendar de asp.net RRS feed

  • 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#
    martes, 25 de agosto de 2009 19:57

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

    miércoles, 26 de agosto de 2009 7:24

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

    martes, 25 de agosto de 2009 20:50
  • 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.
    martes, 25 de agosto de 2009 21:06
  • 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

    miércoles, 26 de agosto de 2009 7:24
  • 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???
    jueves, 3 de septiembre de 2009 18:22
  • 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=@area

    debes 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

    lunes, 7 de septiembre de 2009 7:54