cancel
Showing results for 
Search instead for 
Did you mean: 

Aumentar velocidad uso de matrix

Former Member
0 Kudos

Hola a todos los miembros del foro espero me puedan apoyar lo que pasa es que estoy realizando un addon de creacion de facturas, el problema que tengo ahora es la optimizacion del addon debido a que ya genera las facturas; el problema es que yo hago una consulta basandome en los socios de negocio y la cantidad de articulos que tiene pendiente por entregar cada socio de negocio, esta consulta que realizo en ocasiones es demasiado grande (en ocasiones me regresa 2000 o 3000 registros), y cuando quiero mostrar esta informacion en un matrix el proseso es demasido lento, alguien de ustedes sabe como podria acelarar la velocidad de este proceso???

Existe algunan forma de paginar el matrix??

Aqui les muestro la forma en como estoy leyendo mi recorset y despues asignandole los valeres al matrix.....

While Lrs_RecordSet.EoF = False

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item("M0C00")

Lo_UserDataSource.Value = Lrs_RecordSet.Fields.Item("ItemCode").Value

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(colNumEntrega)

Lo_UserDataSource.Value = Lrs_RecordSet.Fields.Item("DocNum").Value

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(colEntrega)

Lo_UserDataSource.Value = Lrs_RecordSet.Fields.Item("NumAtCard").Value

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(colPrice)

Lo_UserDataSource.Value = Lrs_RecordSet.Fields.Item("Price").Value

Mo_MatrixArt.AddRow()

If Ls_Campo <> "" Then

Mas_Busqueda.Add(Lrs_RecordSet.Fields.Item(Ls_Campo).Value)

End If

Lrs_RecordSet.MoveNext()

End While

Este proceso lo tiene qu erelizar por cada uno de lo sregistros que arroje mi consulta...espero que alguno de los miembros del foro tenga algun metodo para poder aceerar este proceso

De antemano les agradesco....

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

1) No se si ya lo has echo pero como primera cosas habria que hacer un freeze del form.

Mo_Forma.Freeze(true)

tu codigo

Mo_Forma.Freeze(false)

2) Utilizar diferentes variables para utilizar los UDS:

Lo_UserDataSource1 = Mo_Forma.DataSources.UserDataSources.Item("M0C00")
Lo_UserDataSource2 = Mo_Forma.DataSources.UserDataSources.Item(colNumEntrega)
Lo_UserDataSource3 = Mo_Forma.DataSources.UserDataSources.Item(colEntrega)
Lo_UserDataSource4 = Mo_Forma.DataSources.UserDataSources.Item(colPrice)

Mo_Forma.Freeze(true)

While Lrs_RecordSet.EoF = False

Lo_UserDataSource1.Value = Lrs_RecordSet.Fields.Item("ItemCode").Value

Lo_UserDataSource2.Value = Lrs_RecordSet.Fields.Item("DocNum").Value

Lo_UserDataSource3.Value = Lrs_RecordSet.Fields.Item("NumAtCard").Value

Lo_UserDataSource4.Value = Lrs_RecordSet.Fields.Item("Price").Value

Mo_MatrixArt.AddRow()
If Ls_Campo "" Then
Mas_Busqueda.Add(Lrs_RecordSet.Fields.Item(Ls_Campo).Value)
End If
Lrs_RecordSet.MoveNext()
End While

Mo_Forma.Freeze(false)

De esta forma ahorras tiempo porque no pides al form la referencia a lso diferentes UDS (4 veces x 3000 row)

Espero te sea de ayuda.

Ciao