jueves, 13 de mayo de 2010

Como obtener un rango entre dos DateTimePicker y después presentar los datos en un datagridview.



Estimados lectores, ha sido una experiencia agradable el hacer este blog y tener algunos lectores que comparten el gusto por la programación; actualmente estoy empezando otro proyecto, muy personal,  con tecnología web  que espero compartir con toda la comunidad de programadores y necesito recursos porque es algo muy personal y mi situación financiera no es muy buena.

 Si alguien desearía apoyarme  tengo una tarjeta Oxxo Saldazo con el número:  4766-8408-7508-1593, cualquier apoyo lo pueden hacer en cualquier tienda Oxxo o en Banamex, les agradezco y que sus proyectos lleguen a buen fin.
La solución que hago es la siguiente

‘declaro dos variables para almacenar la fecha en formato yyyymmdd de inicio 'y final, la razon de usar este formato es para no tener problemas si el servidor 'sql server maneja diferentes tipos de fecha: anericano o europeo etc
Dim cCadsel As String
Dim sFechainic As String
Dim sFechafin As String
'convertimos desde datetimepicker en el formato de año mes dia
sFechainic = Dtfecha.Value.ToString("yyyyMMdd")
sFechafin = dtfechafin.Value.ToString("yyyyMMdd")
'creo la cadena del query, se recomienda usar stored procedure, pero esta manera
'es para que tengan idea de hacerlo directamente
cCadsel = " Select clapar ,nombre,fecha,area,descarea from datos WHERE fecha >='" & sFechainic _
& "' and fecha < dateadd(dd,1,'" & sFechafin & "')"
'Nota: A la fecha final se le añade un día, de otra manera solo traeria la 'fecha que tuviera 0 horas, ignorando el resto de registros con otra hora

' Declaro el sqldataadapter y el datatable
Dim daparametro As SqlDataAdapter
Dim dtabparam As DataTable
daparametro = New SqlDataAdapter(cCadsel, Conexion)
dtabparam = New DataTable
' Llenar la tabla con los datos indicados
daparametro.Fill(dtabparam)
‘asigno a mi datagrid la tabla
DgParam.DataSource = dtabparam
'y eso seria todo

Datagridview EndEdit Problema, no graba la última fila ingresada, el usuario debe cambiarse de fila. Si pulso el botón de grabar, no actualiza BD


Estimados lectores, ha sido una experiencia agradable el hacer este blog y tener algunos lectores que comparten el gusto por la programación; actualmente estoy empezando otro proyecto, muy personal,  con tecnología web  que espero compartir con toda la comunidad de programadores y necesito recursos porque es algo muy personal y mi situación financiera no es muy buena.
 Si alguien desearía apoyarme  tengo una tarjeta Oxxo Saldazo con el número:  4766-8408-7508-1593, cualquier apoyo lo pueden hacer en cualquier tienda Oxxo o en Banamex, les agradezco y que sus proyectos lleguen a buen fin.
 www.artprogramnet.wordpress.com
Un detalle que se observa en el datagridview, es que para que los datos modificados sean grabados en la base de datos, debe moverse de fila(también pasa cuando el datagrid tiene la propiedad readonly a true y los valores se llenan desde textbox), para así internamente el datagridview confirme los cambios a sus tablas subyacentes, este comportamiento causa los siguientes problemas:
1.-El usuario modifica una celda del datagridview y de inmediato pulsa el botón de grabar, no graba la fila en que está posicionado.
2.-De un conjunto de filas modificadas, la última no se graba.

Bueno para solucionar este detalle, en el botón de grabar, se recorre la tabla subyacente que en este caso se llama dtabalumnos y finalizo todos los cambios pendientes de cada fila.
Luego finalizó todos los cambios pendientes del datagridview, que en este caso se llama dgalumnos
Dim filaalumno As DataRow
For Each filaalumno In dtabalumnos.Rows
filaalumno.EndEdit()
Next filaalumno
Dgalumnos.EndEdit()
Nota: se debe finalizar la edicion de la fila con endedit y despues el datagridview, de otra manera no funciona.
Si han encontrado otra solución mas sencilla, no duden en compartirla