Visual Basic - grilla

Life is soft - evento anual de software empresarial
 
Vista:

grilla

Publicado por aldo (111 intervenciones) el 22/01/2007 22:21:25
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 Daniel (145 intervenciones) el 23/01/2007 23:46:52
Aldo, la verdad no use nunca el msflexgrid, lo que si uso en grilla es el control datagrid. al cual le tenes que asignar a la propiedad datagrid1 (nombre por def).datasource=recordset que vos creas con sentencia sql o asignacion de tabla completa que por lo que decis vos ese seria el tema, con respecto al tiempo, con el datagrid en un momento tuve ese inconveniente y como siempre era error mio ya que le daba la propiedad del recordset.cursorlocation=aduseclient, por ende me creaba no solo el conjunto de registros, recordset sino tambien los metadatos de los campos, por eso tenia ese tiempo muerto. proba con ese control para ver si podes mejorar la performance de tu aplicación, de todas formas, si podes poner un criterio de acotamiento para la cantidad de registros vas a mejorar considerablemente los tiempos, que seguro esto lo sabes asi que perdon por ponerlo.
Espero haber entendido tu problema y a tu disposicion
Daniel
ejemplo con datagrid
Dim DB as ADODB.connection
Dim Rs as ADODB.recordset
set db=new ADODB.Connection:Set rs=New ADODB.Recordset
DB.open "Tu cadena de conexion para abrir"
RS.Open "SELECT 'Campos que necesites' FROM TuTabla,db (esta es la conexion que abriste),adOpenKeyset, adLockOptimistic, adcmdtext
if rs.bof=false and rs.eof=false then ' tenes datos en el recordset entonces los mostras en el datagrid
set datagrid1.datasource=rs
else
msgbox "No hay datos"
end if
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:03:05
Daniel...
muchisimas gracias!!!

me fue de gran ayuda y comprension tu informacion.

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