Foros del Web » Programación para mayores de 30 ;) » .NET »

Refrescar GRID

Estas en el tema de Refrescar GRID en el foro de .NET en Foros del Web. Saludos comunidad, tengo la siguiente duda: En un evento clic dentro de un botón, mando llamar y muestro datos mediante un stored procedure, hasta ahí ...
  #1 (permalink)  
Antiguo 06/11/2012, 12:18
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Refrescar GRID

Saludos comunidad, tengo la siguiente duda:

En un evento clic dentro de un botón, mando llamar y muestro datos mediante un stored procedure, hasta ahí todo bien, pero cuando le aplico un filtro que esta en un combobox y se lo asigno a un parámetro (que por defecto es nulo) le duplica la cantidad de registro del filtro que le aplique, lo que quiero hacer, es que cada vez que se aplique la consulta se limpie el datatable y me vuelva a mostrar el numero de registros que sea el correcto, ya sea aplicándole el filtro o no, ya que por defecto al darle clic botón me trae cierto numero de registros

este es mi código para mostrar:

Código vb:
Ver original
  1. Using Sql As New SqlCommand("TraerChecadas", cnn) With {.CommandType = CommandType.StoredProcedure}
  2.             Dim SqlAd As New SqlDataAdapter(Sql)
  3.             Dim DataT As New DataTable
  4.             Sql.Parameters.AddWithValue("@Fecha", MntMain.SelectionStart.Date)
  5.             Sql.Parameters.AddWithValue("@term", cmb1.SelectedValue)
  6.             SqlAd.Fill(DataT)
  7.             Grid1.DataSource = DataT
  8.         End Using

Mi parámetro @term es el que filtro, ya que el de @Fecha ya esta establecido por un calendario en pantalla
  #2 (permalink)  
Antiguo 06/11/2012, 12:21
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Refrescar GRID

Hola que tal, por que no limpias la informacion al momento de detectar un cambio en el combo box?

Puede hacer un DGV.Row.Clear();

Y luego anexarle de nuevo los valores.

O un DataSource = null.

  #3 (permalink)  
Antiguo 06/11/2012, 12:26
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Refrescar GRID

Siento algo mucho mas complejo detectar movimiento en combobox, por que aparte de este, agregare 2 filtros mas.

Y ya intente lo que me recomendaste y no funciona :(
  #4 (permalink)  
Antiguo 06/11/2012, 12:32
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Refrescar GRID

Mmm se me hace raro yo asi lo uso y no e tenido problemas.

Grid1.DataSource = null;
Dim SqlAd As New SqlDataAdapter(Sql)
Dim DataT As New DataTable
Sql.Parameters.AddWithValue("@Fecha", MntMain.SelectionStart.Date)
Sql.Parameters.AddWithValue("@term", cmb1.SelectedValue)
SqlAd.Fill(DataT)
Grid1.DataSource = DataT

Ya revisaste asi?
  #5 (permalink)  
Antiguo 06/11/2012, 12:34
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Refrescar GRID

No, sigue igual, así es, lo hice exactamente como me lo pones
  #6 (permalink)  
Antiguo 06/11/2012, 12:40
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Refrescar GRID

Ok, como veo tu problema es que al poner un valor nulo es cuando te duplica la información verdad?

Si es asi, valida si el valor no es nulo. Si es nulo que no haga nada, si no lo es que aplilque el filtro.

  #7 (permalink)  
Antiguo 06/11/2012, 12:48
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Refrescar GRID

Agh esta hambre no me permite pensar con claridad hehehe, la verdad ahorita no se me ocurre como traducir eso a código, esperare que regrese de mi horario de comida para verificarlo haha, pero ya tengo un panorama mas amplio del problema gracias a sus respuestas... mas tarde les comento como me fue
  #8 (permalink)  
Antiguo 06/11/2012, 12:52
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Refrescar GRID

Jajaja sale provecho.

  #9 (permalink)  
Antiguo 06/11/2012, 15:34
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Refrescar GRID

Mejor paso mi consulta que es la que me da problemas, al cambiar los parametros de nulos a un valor... no tengo idea que hacer xD


Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[TraerChecadas]
  2. @Fecha DATE,
  3. @term INT=NULL,
  4. @depto INT=NULL
  5. AS
  6. BEGIN
  7.     SET NOCOUNT ON;
  8.    
  9. SELECT p.id_ref_externa AS 'ID',
  10. t.descripcion AS 'Terminal',d.desc_depto AS 'Departamento',p.nombre AS 'Nombre',
  11. a.hora_entrada AS 'Hora_Echecada',
  12. h.hora_entrada AS 'Hora_Entrada',
  13. a.minutos_entrada AS 'Minutos_Entrada',
  14. a.hora_salida AS 'Hora_Schecada',
  15. h.hora_salida AS 'Hora_Salida',
  16. a.minutos_salida AS 'Minutos_Salida',
  17. a.minutos_trabajados AS 'MinTrabajados'
  18. FROM corporativodb.dbo.corp_asistencia a
  19. INNER JOIN corporativodb.dbo.corp_personal AS p ON p.id_personal=a.id_personal
  20. INNER JOIN corporativodb.dbo.corp_horarios AS h ON h.id_horario=a.id_horario
  21. INNER JOIN corporativodb.dbo.corp_depto AS d ON d.id_depto = p.id_depto
  22. INNER JOIN corporativodb.dbo.corp_terminales AS t ON t.id=p.id_terminal
  23. WHERE CONVERT(DATE ,fecha_asistencia,108)=@Fecha OR t.id=@term
  24. ORDER BY t.descripcion,d.desc_depto,p.nombre,a.hora_entrada
  #10 (permalink)  
Antiguo 06/11/2012, 16:08
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Refrescar GRID

Hola que tal, veo un campo que no utilizas @depto, revisa con esto:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[TraerChecadas]
  2.     @Fecha DATE,
  3.     @term INT,
  4.     @depto INT
  5.     AS
  6.     BEGIN
  7.         SET NOCOUNT ON;
  8.        
  9.     SELECT p.id_ref_externa AS 'ID',
  10.     t.descripcion AS 'Terminal',d.desc_depto AS 'Departamento',p.nombre AS 'Nombre',
  11.     a.hora_entrada AS 'Hora_Echecada',
  12.     h.hora_entrada AS 'Hora_Entrada',
  13.     a.minutos_entrada AS 'Minutos_Entrada',
  14.     a.hora_salida AS 'Hora_Schecada',
  15.     h.hora_salida AS 'Hora_Salida',
  16.     a.minutos_salida AS 'Minutos_Salida',
  17.     a.minutos_trabajados AS 'MinTrabajados'
  18.     FROM corporativodb.dbo.corp_asistencia a
  19.     INNER JOIN corporativodb.dbo.corp_personal AS p ON p.id_personal=a.id_personal
  20.     INNER JOIN corporativodb.dbo.corp_horarios AS h ON h.id_horario=a.id_horario
  21.     INNER JOIN corporativodb.dbo.corp_depto AS d ON d.id_depto = p.id_depto
  22.     INNER JOIN corporativodb.dbo.corp_terminales AS t ON t.id=p.id_terminal
  23.     WHERE CONVERT(VARCHAR(10) ,fecha_asistencia, 121)=@Fecha AND t.id= @term
  24.     ORDER BY t.descripcion,d.desc_depto,p.nombre,a.hora_entrada

El OR lo cambie por AND.


Etiquetas: grid, refrescar, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:34.