Visual Basic - grilla

Life is soft - evento anual de software empresarial
 
Vista:

grilla

Publicado por aldo (111 intervenciones) el 22/01/2007 22:22:03
Hola,
estoy mostrando en una grilla datos de una base de datos en access con unos 76200 registros aprox.
Traigo unos 11 campos de la tabla, y no considero que sean tantos registros como para que me demore tantos segundos al traerla a la grilla (me demora mas de 30 segundos).
Y antes de que me termine de mostrar la grilla por completo (los 76221 reg.), me tira un error nro. 30006 "No se puede asignar memoria para FlexGrid" y solo me muestra 27133 registros.
Estoy usando el control MsflexGrid y quisiera saber que es lo que esta causando este error y sobre todo por que demora tanto en traerme los datos a la grilla.

Tambien aceptos opiniones y consejos sobre usar otras grillas (controles) si estas son mas rapidas para mostrar datos.
Con que me digan el nombre con la cual se puede usar para que sea mas veloz que la uso, yo despues investigo lo demas.

Aclaracion... hago la conexion con ADO.
............................................................................
Global dbAccess As New Connection
Set dbAccess = New Connection
dbAccess.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\mdp.mdb;Persist Security Info=False"
............................................................................

Muchas gracias
Aldo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:grilla

Publicado por Matías Freire (421 intervenciones) el 23/01/2007 16:49:24
cambia el control MSFlexGrid por un MSHFlexGrid (Microsoft Hierarchical Flex Grid) y asignale directamente el recordset a través de su propiedad DataSource.

Ej:

Set MiGrid.DataSource = MiRecordset

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:grilla

Publicado por aldo (111 intervenciones) el 23/01/2007 17:51:53
Matias, gracias por tu respuesta

de todos modos, tengo entendido que con el mshflexgrid no puedo mostrar mas de 2048 registros...
esto es asi??

si es asi, no me sirve porque tengo que mostrar mas de 70.000 registros

un saludo
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:grilla

Publicado por Matías Freire (421 intervenciones) el 23/01/2007 21:50:23
primero... no existe tal limitación.... lo acabo de probar colocando 70000 registros en una base y mostrandolos en en un MSHFlexGrid....

segundo.... para qué quieres mostrar los 70000 registros a la vez? para semejante cantidad de registros se hace indispensable un buscador, lo cual te ahorraría el problema de la cantidad de registros, y obviamente mejorar la cantidad de recursos que consuma el sistema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:grilla

Publicado por aldo (111 intervenciones) el 24/01/2007 00:06:21
con respecto a tu pregunta...
tenes MUCHA RAZON Matias, pero asi me lo pidieron.

gracias por tu ayuda!

un saludo desde Buenos Aires, Argentina
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:grilla

Publicado por Matías Freire (421 intervenciones) el 24/01/2007 15:22:34
Acordate que el 99% de las veces el cliente no sabe lo que necesita ni lo que le sirve... el que está haciendo el sistema no solamente tiene que programar lo que el usuario le pide, sino también indicarle al usuario que ciertas cosas no deben hacerse como ellos piensan...

Saludos!

PD: te mando al mail un ejemplo gráfico...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:grilla

Publicado por alfonso garcia (8 intervenciones) el 25/01/2007 16:17:04
Aldo vi tu pregunta y se me ocurre lo sig. en tu consulta trata de hacer lo siguiente.

1.- Crea un index al campo x el que vas a ordenar tu consulta (en la tabla de access)

2.- en el select trata de poner solo los campor que vas a mostrar por ej.
Select campo1, campo1,campor3... from xx

3.- cuando hagas tu consulta hazlo solo de lectura por ejemplo
tb.Open "select campo1, campo1,campor3... from xx
", Mbase, adOpenKeyset, adLockReadOnly

Saludos........................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar