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

rellenar un mshflexgrid

Estas en el tema de rellenar un mshflexgrid en el foro de Programación General en Foros del Web. Hola, tengo un procedimiento que me rellena los datos de un grid, pero unicamente con 10 registros ya que tiene la posibilidad de ir a ...
  #1 (permalink)  
Antiguo 17/05/2004, 01:51
 
Fecha de Ingreso: enero-2003
Mensajes: 39
Antigüedad: 21 años, 3 meses
Puntos: 0
rellenar un mshflexgrid

Hola,

tengo un procedimiento que me rellena los datos de un grid, pero unicamente con 10 registros ya que tiene la posibilidad de ir a al pag siguiente, anterior, a la primera y ultima...
Me funciona pero demasiado lento, tarda como unos 10 segundos en rellenar el grid
Utilizo un while para rellenar el grid.. he intentado hacer el grid.recordset = recordset que ejecuta la consulta pero tengo problemas con la paginacion ya que unicamente deberia mostrar los 10 primeros registros y no se cómo hacerlo...
En fin necesitaria una solucion para q la carga de los datos fuese mucho mas rapida por favor.
El codigo es


Public Sub MiCarga2(grid As MSHFlexGrid, _
sql As String, _
tabla As String, _
tool_navegacion As Toolbar, _
label_navegacion As label, _
Optional RegistrosPorPagina As Long = -1, _
Optional ByRef Pagina As Long = 0)

Set rst = New ADODB.Recordset
Dim i As Long
Dim ifila As Long
Dim salir As Boolean

rst.Open "select count(*) from " & tabla & cad_Where, cnn, adOpenStatic, adLockOptimistic

If rst(0) > 10 Then
tool-navegacion.Visible = True
label_navegacion.Visible = True
label_navegacion.Caption = "Página " & PaginaActual & " de " & Paginas
End If
rst.Close

If RegistrosPorPagina > 0 Then
rst.PageSize = RegistrosPorPagina
End If

rst.Open sql & cad_Where, cnn, adOpenKeyset

If Pagina > 0 Then
If Pagina <= rst.PageCount Then
rst.AbsolutePage = Pagina
End If
Pagina = rst.PageCount ' Devolvemos el número de páginas
End If

grid.Rows = 2

ifila = 1
grid.Row = ifila
salir = False
Do While ((Not rst.EOF) And (salir = False))
For i = 1 To rst.Fields.Count
grid.Col = i
If Not IsNull(rst.Fields(i - 1)) Then
grid = rst.Fields(i - 1)
Else
grid = ""
End If
If grid.ColWidth(i) < Len(rst.Fields(i - 1)) * 140 Then grid.ColWidth(i) = Len(rst.Fields(i - 1)) * 160
Next i
ifila = ifila + 1
grid.Rows = ifila + 1
grid.Row = ifila
rst.MoveNext
If ifila > RegistrosPorPagina Then salir = True
Loop

grid.Rows = ifila


grid.ColWidth(0) = 200
grid.Row = 0
grid.Col = 0
End Sub
  #2 (permalink)  
Antiguo 17/05/2004, 10:07
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Antes de comenzar a escribir la informacion en el grid utiliza

GRID.Redraw = False

{codigo con que insertas la informacion en el Grid}

GRID.Redraw = True

Con eso se vera automaticamente y no tardara los 10 segundos que mencionas.

Espero que ese sea el problema
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #3 (permalink)  
Antiguo 17/05/2004, 20:14
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Tambien te recomiendo que en tu ciclo en lugar de ir asignandole los renglones y columnas al grid para despues asignarle el texto, hagas lo siguiente:

'Renglon, Columna de donde asignaras texto usando TextMatrix
If Not IsNull(rst.Fields(i - 1)) Then
grid.TextMatrix(ifila,i) = rst.Fields(i - 1)
else
grid.TextMatrix(ifila,i) = ""
end if
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
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 05:46.