FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Uso de funcion Expand
Posts: 56
Joined: Mon Apr 11, 2011 06:22 PM
Uso de funcion Expand
Posted: Mon Aug 13, 2018 09:20 AM
Buenos dias foro !

Siguiendo el ejemplo de Carlos Mora en el hilo http://forums.fivetechsupport.com/viewtopic.php?f=6&t=29700&start=15 en el que nos ilumina con un ejemplo para codificar SQL mediante el uso de TEXT INTO ... ENDTEXT

Me encuentro que la funci贸n Expand() no se comporta como se espera (al menos en mi Harbour 3.2)

En su ejemplo, Carlos Mora dice :
Code (fw): Select all Collapse
<tns:employeeIdentificationNumber>$1</tns:employeeIdentificationNumber>
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽<tns:startDate>$2</tns:startDate>
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽<tns:endDate>$3</tns:endDate>

Y con Expand sustituye $1, $2, $3 por
Code (fw): Select all Collapse
Expand( cTransac, oQuery:dni, oQuery:FechaInicio, oQuery:FechaFin )


En mi caso tengo
Code (fw): Select all Collapse
local cSql, cFilter :="first"
聽 聽 TEXT INTO cSql
聽 聽 聽 聽聽SELECT c.codigo, c.nombre, f.nombre
聽 聽 聽 聽 FROM clientes AS c
聽 聽 聽 聽 INNER JOIN fpago AS f 
聽 聽 聽 聽 ON c.fpago=f.codigo
聽 聽 聽 聽 WHERE c.nombre=$1
聽 聽 ENDTEXT

聽 聽 cSql := Expand( cSql, cFilter )

Y la cadena obtenida es inteligible :
Code (fw): Select all Collapse
鈼媐 f f f鈼媐SfEfLfEfCfTf fcf.fcfofdfifgfof,f fcf.fnfofmfbfrfef,f fff.fnfofmfbfrfef
f鈼媐鈼媐FfRfOfMf fcflfifefnftfefsf fAfSf fcf
f鈼媐鈼媐IfNfNfEfRf fJfOfIfNf fffpfafgfof fAfSf fff f
f鈼媐鈼媐OfNf fcf.fffpfafgfof=fff.fcfofdfifgfof
f鈼媐鈼媐WfHfEfRfEf fcf.fnfofmfbfrfef=f$f1f


Qu茅 hago mal ?
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Uso de funcion Expand
Posted: Mon Aug 20, 2018 09:57 AM

Quim,

El c贸digo fuente de la funci贸n Expand() est谩 en el mismo hilo, y como ves no hace mucho.

Imprime la cadena del text/endtext sin pasarla por el expand, creo que ahi est谩 el problema. Puede que el problema venga del encoding desde donde copiaste la query o algo as铆.

驴Que editor de c贸digo usas?

Prueba escribiendo tu mismo la cadena SQL sin copiarla de otro sitio.

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 56
Joined: Mon Apr 11, 2011 06:22 PM
Re: Uso de funcion Expand
Posted: Mon Aug 20, 2018 04:24 PM
Muchas gracias Carlos por responder ...

La confusi贸n ha venido ya que la funcion Expand existe en la lib hbct y por lo tanto, la estaba utilizando tal cual :-)

https://harbour.github.io/doc/clct3.html#expand

Pruebo tu funci贸n y seguro que funciona, de lo contrario te lo comento

Gracias de nuevo !!
Posts: 56
Joined: Mon Apr 11, 2011 06:22 PM
Re: Uso de funcion Expand
Posted: Tue Aug 21, 2018 09:06 AM
Carlos

Funciona de maravilla, aplicable a SQL, XML, etc

En mi caso, para no tener errores con la funcion Expand() de hbct.lib la he renombrado como BindParams, an谩loga a PHP
Code (fw): Select all Collapse
function BindParams( cQuery, ... )

聽 聽local i

聽 聽i:= pcount()
聽 聽while i > 1
聽 聽 聽 cQuery:= strtran( cQuery, '$'+(ltrim(str(i-1))), ClipValue2SQL( HB_PValue(i) ) )
聽 聽 聽 i--
聽 聽end

RETURN cQuery


Y la uso as铆 :
Code (fw): Select all Collapse
TEXT INTO cSql
    SELECT *
    FROM clientes AS c
    WHERE c.codigo=$1
ENDTEXT

BindParams( @cSql, aParams['codigo'] )


Saludos
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: Uso de funcion Expand
Posted: Thu Aug 23, 2018 02:51 AM

carlos, quim,

excelente aporte, muchas gracias.

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com

Continue the discussion