Hoteles en Buenos Aires

(Cerrar)
CapitalFederal.com
  HOME - CAPITALFEDERAL.COM | HOME - MANUALES DE REFERENCIA

BuscarBuscar en los backups    LoginLogin del administrador 


MANUALES DE REFERENCIA  


Registra tus clasificados Gratis en BuenosAires.com
Clasificados de Automotores | Clasificados de Computadoras

MUEBLES DE OFICINA - NUEVA GUIA DE BUENOS AIRES.COM


MsflexGrid, addItem

 

   INICIO FOROS -> Todo sobre VISUAL BASIC en Español
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Omar
Invitado





MensajePublicado: Dom Jul 22, 2007 1:28 am    
Asunto: MsflexGrid, addItem


TEMA CERRADO

Buenos noches quisiera saber si alguien me puede ayudar con lo siguiente:
Tengo un control msflexgrid que tiene 20 columnas y lo lleno con una
cantidad n de regitros, el problema se presenta cuando intento llenarlo con
17500 registros que vienen de una tabla de SQL y me dice out of memory como
puedo solucionar esto?

de antemano les agradesco demasiado su colaboracion..

Saludos,

Omar
Volver arriba
SoftJaén
Invitado





MensajePublicado: Dom Jul 22, 2007 4:56 am    
Asunto: Re: MsflexGrid, addItem


TEMA CERRADO

"Omar" preguntó:

Cita:
quisiera saber si alguien me puede ayudar con lo siguiente:
Tengo un control msflexgrid que tiene 20 columnas y lo lleno con una
cantidad n de regitros, el problema se presenta cuando intento llenarlo
con 17500 registros que vienen de una tabla de SQL y me dice out of
memory como puedo solucionar esto?

Hola, Omar:

Quiero recordar que el control MSFlexGrid presentaba ese problema cuando se
deseaba cargar un número considerable de registros, en tu caso 17.500
registros, pero que en otros casos pueden ser más o menos registros, sobre
todo, si el control se encuentra enlazado a un control Data cuya propiedad
«DefaultType» esté establecida a «UseODBC», tal y como se comenta en el
siguiente artículo de la Base del Conocimiento:

PRB: MSFlexGrid no devuelve todas las filas con control de datos de UseODBC
http://support.microsoft.com/kb/171952/es

Una solución sería utilizar el control DataGrid, o bien, leer páginas de
registros. Consulta el siguiente artículo de la Base del Conocimiento (en
inglés):

How To Display Recordset 'Pages' in an MSFlexGrid Control Without Loading
Entire Recordset into the Grid
http://support.microsoft.com/kb/254117/en-us

Un saludo

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Volver arriba
Leonardo Azpurua
Invitado





MensajePublicado: Dom Jul 22, 2007 5:16 am    
Asunto: Re: MsflexGrid, addItem


TEMA CERRADO

"Omar" <Omar@discussions.microsoft.com> escribió en el mensaje
news:D2FD7F64-4E32-405C-9230-9A14F52F5801@microsoft.com...
Cita:
Buenos noches quisiera saber si alguien me puede ayudar con lo siguiente:
Tengo un control msflexgrid que tiene 20 columnas y lo lleno con una
cantidad n de regitros, el problema se presenta cuando intento llenarlo
con
17500 registros que vienen de una tabla de SQL y me dice out of memory
como
puedo solucionar esto?

de antemano les agradesco demasiado su colaboracion..

Hola, Omar

17500 registros, con la densidad estandar de 55 lineas por pagina son 318
paginas.

Nadie es capaz de manejar esa cantidad de información simultáneamente. Nadie
necesita toda esa información "de un solo golpe".

Sin embargo, un MsFlexGrid debería ser capaz de almacenar y mostrar sin
problemas esa cantidad de registros: dependiendo de la manera en que lo
llenes, podría tomar más o menos tiempo cargando la información.
Accidentalmente he llenado flexgrids de ese tamaño, tal vez mayores, sin
problemas, en equipos mas bien "normalitos" en cuanto a sus capacidades.

Descartados los límites de memoria del grid, quedan como causas probables en
primer lugar limitaciones severas con el hardware del equipo (cosas del tipo
de WinXP en un equipo con 64MB RAM -no se si ese sea el caso) o bien un uso
excesivo de operaciones con cadenas.

En el titulo mencionas el metodo AddItem. Dicho metodo te permite
especificar el contenido de la nueva fila como una cadena, donde cada dato
viene separado del siguiente con un tabulador (VT, Chr(9)).

Si estas armando esa cadena con una secuencia del tipo:

Do While not rs.EOF
nuevaFila = ""
For i = 0 To rs.Fields.Count - 1
If i > 0 Then nuevaFila = nuevaFila & Chr(9)
nuevaFila = nuevaFila & rs.Fields(i)
Next
elFlexGrid.AddItem nuevaFila
rs.MoveNext
Loop

estas creando 40 nuevas cadenas por registro, para un total de 700.000
nuevas cadenas, que no es un numero impresionante pero si puede resultar una
carga excesiva en un sistema limitado físicamente y lógicamente
sobrecargado.

Si tu secuencia de llenado del grid se basa en el uso de concatenación de
cadenas (nuevaFila = nuevaFila & Chr(9) & proximaColumna) puedes probar a
reducir la cantidad, así:

Private Const MAXIMO_ANCHO = 5000
nuevaFila = String(MAXIMO_ANCHO, " ")
Do While Not rs.EOF
Dim n As Integer, m As Integer
n = 1
For i = 0 To rs.Fields.Count - 1
If i > 0 Then
Mid(nuevaFila, n, 1) = Chr(9)
n = n + 1
End If
m = Len(CStr(rs.Fields(i)))
Mid(nuevaFila, n, m) = CStr(rs.Fields(i))
n = n + m
Next
elFlexGrid.AddItem Left(nuevaFila, n)
rs.MoveNext
Loop

de esta manera, minimizas la creacion de cadenas. Si el insuficiencia de
memoria tenia algo que ver con esto, debería desaparecer.

De todas maneras,.estoy seguro de que tus usuarios te agradecerían si les
das algún tipo de recurso para filtrar los registros a cargar en el grid:
una mascara para la descripcion, un rango de códigos o cualquier
caracteristica adicional que les permita especificar lo que quieren.

Otra posibilidad, la mas simple, es utilizar un DataGrid, que maneja los
detalles de la carga de datos de una manera eficientísima.


Salud!
Volver arriba
Mostrar mensajes de anteriores:   
Este foro está cerrado y no podés publicar, responder o editar temas   Este tema está cerrado y no podés editar mensajes o responder    INICIO FOROS -> Todo sobre VISUAL BASIC en Español Todas las horas son GMT - 3 Horas
Página 1 de 1

 
Cambiar a:  
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro


Powered by phpBB © 2001, 2005 phpBB Group


Todos los mensajes aquí publicados, son extraídos de la USENET