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

cargar rápido un grid

Estas en el tema de cargar rápido un grid en el foro de .NET en Foros del Web. Hola amigos, como siempre por aquí, tengo unos grid que cargo con datos que el usuario elige entre fechas, el problema es que cuando elige ...
  #1 (permalink)  
Antiguo 06/07/2011, 12:47
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Pregunta cargar rápido un grid

Hola amigos, como siempre por aquí, tengo unos grid que cargo con datos que el usuario elige entre fechas, el problema es que cuando elige un mes se hace muy larga la espera...hay manera de acelerar la carga de un grid?
  #2 (permalink)  
Antiguo 06/07/2011, 12:53
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: cargar rápido un grid

Como lo estas cargando, ya probaste optimizar el query?
  #3 (permalink)  
Antiguo 06/07/2011, 12:54
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: cargar rápido un grid

Hola guille la carga demora cuando tienes demasiada informacion a listar, cuando la conexion es pésima, cuando tus consultas contienen Group By,Order By... (aqui ya que cuando lista todos los datos tiene que recorrer todas las rows y y ver letra por letra con las demas para ordenarlo, lo cual obviamente genera la demora etc,etc...). Pega el codigo que usas. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 06/07/2011, 13:23
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

lo hago así

Public Sub conectagridcompleto()

Dim adapta2 As New OleDbDataAdapter
Dim datavacio As New DataSet

Dim comados = conexion.CreateCommand
comados.CommandType = CommandType.Text
Try

comados.CommandText = "SELECT reg,Plu,Producto,Cantidad,Pts,Fecha,NombreFormaPag o,IvaVenta,Barra,NombTerminal,Anulado,IdComanda From IntroduccionDeVentasAhora WHERE Barra = @combo1 and NombTerminal = @combo2 and Anulado=0 and Fecha BETWEEN @FI AND @FF order by reg "
' and NombreFormaPago <> ('TARJETA CREDITO') and
'creo los parametros que uso en el SELECT, para filtrar en el datagridview(dgtotales)
comados.Parameters.AddWithValue("@combo1", ComboMostrador.SelectedValue.ToString)
comados.Parameters.AddWithValue("@combo2", ComboTerminal.SelectedValue.ToString)
comados.Parameters.AddWithValue("@FI", Fecha1.Value.Date.ToString("dd/MM/yyyy"))
comados.Parameters.AddWithValue("@FF", Fecha2.Value.Date.ToString("dd/MM/yyyy"))


adapta2.SelectCommand = comados
adapta2.Fill(datavacio, "IntroduccionDeVentasAhora")

'MessageBox.Show(adapta2.Fill(datavacio, "IntroduccionDeVentasAhora").ToString)


'aquí cargo el datasource y el datamenber del datagrid
dgcompleto.DataSource = datavacio
dgcompleto.DataMember = "IntroduccionDeVentasAhora"
dgcompleto.Refresh()

Catch
'If RadioBIVA18.Checked = True Then
' MessageBox.Show("No hay datos")
'End If
End Try

'cargo las funciones para los radiobutton una vez se seleccionan

'sumatotallabel()
'sumatotal()
'sumatodo()
sumatodograntotal()


conexion.Close()

End Sub
  #5 (permalink)  
Antiguo 06/07/2011, 13:24
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

y otra es así

Public Sub conectagrid()

Dim adapta2 As New OleDbDataAdapter
Dim datavacio As New DataSet

Dim comados = conexion.CreateCommand
comados.CommandType = CommandType.Text
Try

comados.CommandText = "SELECT reg,Barra,NombTerminal,ROUND(Sum(Cantidad*Pts),2) AS TOTAL,NombreFormaPago,Fecha,Anulado From IntroduccionDeVentasAhora WHERE Barra = @combo1 and NombTerminal = @combo2 and Anulado=0 and NombreFormaPago <> ('TARJETA CREDITO') and Fecha BETWEEN @FI AND @FF group by reg,Barra,NombTerminal,NombreFormaPago,Anulado,Fec ha Order by ROUND(Sum(Cantidad*Pts),2) DESC"
'comados.CommandText = "SELECT reg,Barra,NombTerminal,Anulado,Fecha, ROUND(Sum(Cantidad*Pts),2) AS TOTAL From IntroduccionDeVentasAhora WHERE Barra = @combo1 and NombTerminal = @combo2 and Anulado=0 and Fecha BETWEEN @FI AND @FF group by reg,Barra,NombTerminal,Anulado,Fecha Order by ROUND(Sum(Cantidad*Pts),2) DESC"

'creo los parametros que uso en el SELECT, para filtrar en el datagridview(dgtotales)
comados.Parameters.AddWithValue("@combo1", ComboMostrador.SelectedValue.ToString)
comados.Parameters.AddWithValue("@combo2", ComboTerminal.SelectedValue.ToString)
comados.Parameters.AddWithValue("@FI", Fecha1.Value.Date.ToString("dd/MM/yyyy"))
comados.Parameters.AddWithValue("@FF", Fecha2.Value.Date.ToString("dd/MM/yyyy"))

adapta2.SelectCommand = comados
adapta2.Fill(datavacio, "IntroduccionDeVentasAhora")

'MessageBox.Show(adapta2.Fill(datavacio, "IntroduccionDeVentasAhora").ToString)


'aquí cargo el datasource y el datamenber del datagrid
DgEstima.DataSource = datavacio
DgEstima.DataMember = "IntroduccionDeVentasAhora"
DgEstima.Refresh()

Catch
MessageBox.Show("Compruebe si dispone de datos cargados")
frmProgressbar.Close()

End Try

'sumatodograntotal()

conexion.Close()

End Sub
  #6 (permalink)  
Antiguo 06/07/2011, 13:25
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

yo no lo noto por que tengo un equipo potente, pero los clientes he visto que el programa carga lento y los grid lentísimossss....y tiene 2 gb de ram disco 500 gb y procesador alto
  #7 (permalink)  
Antiguo 06/07/2011, 13:32
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

eeeeeeeeeeeeeeeeeeeeeeee super aqua...no te había leído...holaaaaaaaaaaaaaaaaa amigo....espero estés bien...me alegra leerte por el forrrooooooooooooooo :)
  #8 (permalink)  
Antiguo 06/07/2011, 13:41
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: cargar rápido un grid

wow es una consulta un poco cargadita.... SUM, GROUP BY... ORDER BY(Dentro del order un SUM), tu cliente tendrá demasiados registros? y si mas no me equivoco lo trabajas con un archivo access no ?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #9 (permalink)  
Antiguo 06/07/2011, 14:07
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: cargar rápido un grid

MMM, algo que noto es que tienes que cerrar la conexion, la conexion cuando se trata de consultas, no commands, si no mas bien datadapters, no necesitan que se abra la conexion, el adaptador en el metodo Fill abre la conexion, bueno con eso ahorras, ahora con el query, es un query normal, yo eh hecho y usado querys mas complejos y extensos, lo que te recomiendo es que pongas indices en las tablas y trata de trabajar con esos campos, podrias tambien utilizar en lugar del BETWEEN un mayor que > y menor que < son mejores y tienen mejor performance, el order by y demas tambien lo puedes sacar del query y ponerlo dentro del arreglo pero no creo que influya mucho. prueba y si tienes dudas me cuentas
ups como le pasas la conexion , pues con la misma propiedad del adapter de conexion, ahi le pasa el string...
ehh, si es una vista, (lo digo por el nombre IntroduccionDeVentasAhora) pon el codigo asi miramos como esta tu query,

Última edición por HaverRamirez; 06/07/2011 a las 14:27 Razón: la conexión, es una vista?
  #10 (permalink)  
Antiguo 06/07/2011, 14:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

bien amigos....no se trabjar con índices...me ayudais?¿?, voy a probar lo de mayor y menor no lo sabía que así valía....
  #11 (permalink)  
Antiguo 06/07/2011, 14:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

que quiere decir "si es una vista", y que ponga el query...?¿? no comprendo me lo explicas?, es que no se que pides que ponga...gracias
  #12 (permalink)  
Antiguo 06/07/2011, 14:41
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: cargar rápido un grid

ok, una vista es un query que reside en la base de datos y consultas a el query residente, o sea

create view VAlgo
as
select c.nombre, e.empresa from cliente inner join empresa e on c.idempresa = e.idempresa

luego la llamas

Select nombre, empresa from VAlgo

los indices son las llaves primarias de la tabla, as de cuenta, el indice es eso un indice, jajaja, no mira, es como un libro, antes de ir a leerte todo el libro, por un tema en especifico, mejor miras en el indice, ves la pagina y te vas a la pagina, resulta igual con las bases de datos, cuando creas una llave primaria por default se crea un indice sobre esa llave, tambien puedes crear tus indices pero eso es en las propiedades de la tabla.
  #13 (permalink)  
Antiguo 06/07/2011, 15:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: cargar rápido un grid

vale, creo que lo voy comprendiendo, sobre todo gracias por tus explicaciones, voy a probar...gracias amigo...

Etiquetas: grid
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 09:36.