Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2004, 01:51
drn r
 
Fecha de Ingreso: enero-2003
Mensajes: 39
Antigüedad: 21 años, 4 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