Cargar 1000 registros en una lista

Discute sobre la aplicación de hojas de cálculo
Responder
verdeneruda
Mensajes: 9
Registrado: Jue Dic 10, 2009 6:39 pm

Cargar 1000 registros en una lista

Mensaje por verdeneruda »

He realizado varias publicaciones en este foro, y poco a poco he encontrando como llenar una lista, como capturar la selección y otras varias cositas que he aprendido en este foro, en este momento debo llenar una lista de 11000 registros, actualmente la estoy llenando la lista con la instrucción:

for co1 = 1 to 678'oRango.Rows.getCount()
olstDatos.addItem( oHojaDatos.getCellByPosition(0,co1).getString, olstDatos.getItemCount)
co1 = co1 + 1
Next


o con esta tambien funciona

Do Until oHojaDatos.getCellByPosition(0,co1).getString = ""
olstDatos.addItem( oHojaDatos.getCellByPosition(0,co1).getString, olstDatos.getItemCount)
co1 = co1 + 1
Loop


Resulta que las dos para efectos de 0 a 500 registros funcionan perfectamente, pero cuando le quiero cargar + de 10.000 registros se bloquea aparentemente el programa y se demora aprox 40min, haciendo seguimiento al código se encontro que aparentemente la demora es por lo que gasta la rutina en cargar la lista.

Según lo anterior no se si ustedes me puedan ayudar con un metodo o instrucción que no se demore tanto cargandome la lista o que me pueda asignar directamente el rango de datos.

Con esta instrucción estoy recibiendo un Array con todos los datos pero no se como asignarlo a la lista si que se demore tanto, la intruccion es:

Data = oRango.getDataArray()

el código completo que estoy utilizando es:

Option Explicit
Dim olstDatos As Object
Public sValor As String
Dim oRango As Object
Dim Data() As Double
Dim oDlg As Object 'Define un objeto para llamar al Dialogo
Dim oHojaDatos As Object 'Define un objeto para Referirse a la Hoja de donde se traen los datos
Dim co1 As Long 'identifica el contador y la posición de columna
Dim oRegistros As Long

'Funcion Pricipal
Sub Main

oDlg = CargarDialogo( "dlgDatos" ) ' Llama la función
olstDatos = oDlg.getControl("lstDatos")
oHojaDatos = ThisComponent.getSheets.getByName("Fasecolda")
co1 = 1

'Referencia al rango A2:A10
oRango = oHojaDatos.getCellRangeByName("A2:A10420")
'Y lo seleccionamos
ThisComponent.getCurrentController.select(oRango)

Data = oRango.getDataArray()

for co1 = 1 to 678'oRango.Rows.getCount()
olstDatos.addItem( oHojaDatos.getCellByPosition(0,co1).getString, olstDatos.getItemCount)
co1 = co1 + 1
Next


' Do Until oHojaDatos.getCellByPosition(0,co1).getString = ""
' olstDatos.addItem( oHojaDatos.getCellByPosition(0,co1).getString, olstDatos.getItemCount)
' co1 = co1 + 1
' Loop

oDlg.execute()

sValor = olstDatos.getSelectedItem()

oDlg.dispose()


msgbox Svalor

'Coloca el valor seleccionado en la posición indicada
ThisComponent.getCurrentController.getActiveSheet.getCellByPosition(4,4).setString( sValor )

End Sub
sub CargueDos


for co1 = 679 to 1876'oRango.Rows.getCount()
olstDatos.addItem( oHojaDatos.getCellByPosition(0,co1).getString, olstDatos.getItemCount)
co1 = co1 + 1
Next
end sub


Function CargarDialogo( Nombre As String ) As Object
'Cargamos la librería Standard en memoria
DialogLibraries.LoadLibrary( "Standard" )
'Cargamos el cuadro de diálogo en memoria
CargarDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName( Nombre ) )
End Function
Última edición por mauricio el Dom Ene 03, 2010 5:13 am, editado 1 vez en total.
Razón: Cambiar titulo a minúsculas
JULIO JIMENEZ
OpenOffice 2.4 en Windows Xp
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: CARGAR 1000 REGISTROS EN UNA LISTA

Mensaje por mauricio »

Hola...

Si, hemos visto los diferentes mensajes del mismo tema, por favor, trata de darle seguimiento en un mismo hilo, gracias.

Prueba la alternativa que te muestro en el ejemplo anexo, con los mismos 10,000 registros ahora se tarda apenas unos segundos, creo que es la solución más viable si requieres usar un cuadro de dialogo, por favor, revisala y si te sirve, marca todos tus mensajes como resueltos.

Saludos
Adjuntos
Mostrar valores en ListBox_v2.ods
(39.92 KiB) Descargado 229 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder