FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Uso de For Each
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Uso de For Each
Posted: Mon Aug 08, 2016 03:33 AM

Tengo una duda

Tengo un select en tdolphin que me devuelve un numero indeterminado de filas. A veces sobre 15.000 filas, y debo si o si pasarlos a una array por diversos manejos y calculos que hago con ellos.

Ahora hago esto.

Local xArr:={}
Local xDb:=tDolphinQry():New("select f1, f2, f3 from xTable", oSvr)
Local x:=0

  For x=1 to xDb:nRecCount
       xDb:getRow()
       Aadd(xArr,{f1,f2,f3,1,.F.}) 
       xDb:Skip()
  Next

Como optimizo eso con For Each... que me ha resultado muy rapido para manejo de arreglos, pero no me cuadra para hacer el traspaso del select a un arreglo agregandole otros valores, sino usaria xDb:FillArray() propio de tDolphin

Eso .. gracias de antemano.

Desde Chile
Adolfo

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Uso de For Each
Posted: Mon Aug 08, 2016 03:39 PM

por ejemplo.. si hago esto

Local x

 For EACH x IN xDb
     Aadd(xArr,{F1,F2,F3,1,.F.})
     xDb:Skip()
 Next

Obtengo solo 38 filas, cuando deberian ser 6900 en la consulta que hago....
No falla ni se cae, solo trabaja por una minima porcion del recordset.

Alguna idea.

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Uso de For Each
Posted: Mon Aug 08, 2016 04:28 PM

Adolfo:

No te sirve el método ?

array := recordset.GetRows(Rows, Start, Fields )

Con esto pasas todo el recordset a un arreglo bidimensional.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Uso de For Each
Posted: Tue Aug 09, 2016 02:59 AM

Armando...

es que necesito agregar otros datos al array aparte de los campos solicitados en el Query

Veo que invento.

Gracias

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Uso de For Each
Posted: Tue Aug 09, 2016 03:38 AM
Code (fw): Select all Collapse
...
oQry := oServer:Query("select campo1, campo2, campo3, cast( 0 as int ) as campovirtual4, "" as campovirtual5  from tabla")
aArr := oQry:FillArray()
?valtype(aArr)
xbrowse(aArr)


salu2
carlos vargas
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Uso de For Each
Posted: Tue Aug 09, 2016 03:41 AM

Carlos... el problema son los campos logicos

Select f1,f2, f3, 1 as num, FALSE as LOGICO from xDb

Al usar xDb:FillArray() el campo logico no asume .F.

Gracias, sigo en la busqueda

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Uso de For Each
Posted: Tue Aug 09, 2016 03:44 AM

umm, uno de los parametros de fillarray, es un codeblock que se evalua por cada fila insertada al arreglo, mira si por ahi no se puede hacer algo.
si no pues seria modificar ese metodo para que al vuelo realize cambios.

salu2
carlos vargas

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)

Continue the discussion