Uso ADS y, hasta ahora, luego de realizar un query a la DBF, lo que hacía era pasar a un array lo obtenido del query (en mi caso en sqlarea).
Código simplificado:
- Code: Select all Expand view
- if ADSExecuteSQLDirect( cConsulta1 )
sqlarea->(dbgotop())
do while sqlarea->(!eof())
Aadd(aArray , {alltrim(str(sqlarea->TALON)) , alltrim(sqlarea->NOMBRE)} )
sqlarea->( DbSkip())
enddo
xBrowse(aArray)
Esto funciona bien ya que luego en el xBrowse hago un "oBrw:SetArray( aArray , .t. )" y le asigno el array para hojear
Ahora se me presenta que los datos obtenidos de una DBF (siempre con un query), son muchos y el query es respondido casi en forma instantánea quedando los datos en "sqlarea", tal como lo compruebo con este código simplificado en el que me mustra los diez primeros datos:
- Code: Select all Expand view
- sqlarea->(dbgotop())
for f = 1 to 10
msginfo(sqlarea->TALON+" "+sqlarea->NOMBRE)
sqlarea->( DbSkip())
next
Pero como decía antes, como los datos tomados son muchos (más de 10000), el armado del array tarda muchísimo (casi dos minutos).
Por esto consulto: ¿hay alguna forma en que pueda "asignarle" el resultado del query en forma directa al xBrowse?. Como si fuese una oDBF o similar para de esta manera evitar el armado del array con el resultado del query que es lo que más demora la ejecución del xBrowse.
Gracias.
Rolando