Uso de For Each

Uso de For Each

Postby Adolfo » Mon Aug 08, 2016 3: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
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Uso de For Each

Postby Adolfo » Mon Aug 08, 2016 3: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
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Uso de For Each

Postby Armando » Mon Aug 08, 2016 4: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
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Uso de For Each

Postby Adolfo » Tue Aug 09, 2016 2: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
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Uso de For Each

Postby carlos vargas » Tue Aug 09, 2016 3:38 am

Code: Select all  Expand view  RUN

...
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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Uso de For Each

Postby Adolfo » Tue Aug 09, 2016 3: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
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Uso de For Each

Postby carlos vargas » Tue Aug 09, 2016 3: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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests