Returning Values from Functions... (Retornando valores desde funciones)

1,127 views
Skip to first unread message

Fox Reloaded

unread,
Apr 22, 2013, 12:33:48 PM4/22/13
to publice...@googlegroups.com
Hola amigos Foxeros®

Antes que nada les agradezco la ayuda que me puedan brindar al respecto, es solo para preguntar como hago para retornar valores desde funciones, en la cual se declare una variable como parametro y esta misma contenga el valor de retorno de la funcion. Un buen ejemplo de esto es la funcion SQLEXEC() que contiene varios parametros y en uno de ellos, se declara una variable la cual nos sirve para usarla como el cursor que nos devolvera dicha funcion, he buscado en la ayuda de FOXPRO sin encontrar mayor detalle en su sintaxis.

Alguien ha usado este tipo de funciones antes? como lo ha hecho?

Muchas gracias por toda la informacion que me puedan brindar al respecto...


Analyzer

unread,
Apr 22, 2013, 12:40:16 PM4/22/13
to Comunidad de Visual Foxpro en Español
Creo este artículo sobre MySql y VFP de Portalfox, puede serle de utilidad:





Saludos!

Fox Reloaded

unread,
Apr 22, 2013, 12:41:58 PM4/22/13
to Comunidad de Visual Foxpro en Español
Eso no tiene que ver en nada con lo que pregunte... :S

De todas maneras gracias y sigo abierto a nuevas respuestas... :S


2013/4/22 Analyzer <thenewin...@gmail.com>



--
Thank you for everything... :)


----  Christian Torres ----
* * * * Venezuela * * * *

Fox Reloaded

unread,
Apr 22, 2013, 12:54:10 PM4/22/13
to Analyzer, Comunidad de Visual Foxpro en Español
Nah, eso ya se que es, dejame ver a ver si me explico mejor, hay funciones en las cuales uno de los parametros devueltos por la misma puede ser una variable que se use despues para cierto fin, en este caso, la funcion tendria dos parametros a recibir, uno de ellos con una sentencia SQL y otra que simplemente es una variable que retornará un cursor completo ya depurado, pero en la variable a igualar con la funcion, se guardara un dato de byte para indicar si la funcion creo correctamente el cursor.

variable1 = SQLEXEC(paramODBCCONN, "SQL Query", nombredecursor)

En este caso la funcion te retorna dos parametros, uno el nombre del cursor y otro un entero que te indica cuando la funcion ha terminado de ejecutar correctamente.

Espero haberme explicado mejor a fin de que me puedan ayudar con esta duda.

Gracias de antemano.


2013/4/22 Analyzer <thenewin...@gmail.com>
Le sirve esto:

Pasar parámetros por valor y por referencia

Carlos Boemo

unread,
Apr 22, 2013, 1:08:50 PM4/22/13
to publice...@googlegroups.com
Te paso un ejemplo de una funcion a la que le ingresás un numero real y te devuelve un numero con la cantidad de decimales que le indiques por parametro.

LPARAMETERS xnum,xdec
* xnum = numero decimal
* xdec = cantidad de decimales
* Esta funcion trunca no redondea
LOCAL xret
xret = INT(xnum * 10^xdec) / 10^xdec
RETURN xret

Hugo C.

unread,
Apr 22, 2013, 1:33:07 PM4/22/13
to publice...@googlegroups.com
Intenta algo como esto.

LOCAL lcDato 
lcDato = "Un Valor"
=CambiaDato(@lcDato)  &&  Pasar valor por referencia

? lcDato

&& "Otro Valor"

PROCEDURE CambiaDato(lcDatao)
lcDatao = "Otro Valor"

Saludos.

Hugo C.

unread,
Apr 22, 2013, 1:37:44 PM4/22/13
to publice...@googlegroups.com
Falto el RETURN

LOCAL lcDato 
lcDato = "Un Valor"
r = CambiaDato(@lcDato)  &&  Pasar valor por referencia

? lcDato
? r
&& "Otro Valor"
&& 1


PROCEDURE CambiaDato(lcDatao)
lcDatao = "Otro Valor"
RETURN 1

Saludos.

El lunes, 22 de abril de 2013 10:33:48 UTC-6, Fox Reloaded escribió:

Carlos Miguel FARIAS

unread,
Apr 22, 2013, 1:46:44 PM4/22/13
to Grupo Fox

El ejemplo de sqlexec confunde porque la variable que se indica como nombre cursor, no devuelve un cursor en la variable, si no que crea un cursor con el nombre pasado en la variable.
Eso seria como tener un procedimiento que crea un objeto que queda disponible por la ejecución del mismo y no por algo que devuelva la función, ya sea vía return o vía parámetros por referencia, como lo hacen las funciones de arreglos.
Saludos: Miguel, La Pampa (RA)

Fox Reloaded

unread,
Apr 22, 2013, 2:52:51 PM4/22/13
to Comunidad de Visual Foxpro en Español
Ok un punto a tu favor, como haria en este caso, ya que necesito que la funcion me devuelva en uno de sus parametros, un cursor ya modificado, y guardar en la variable con la que igualo la funcion, un byte el cual me indique si la funcion finalizo correctamente o no.

Sigo a la espera de su ayuda, aunque tambien estoy buscando por otros medios.

Gracias de antemano.


2013/4/22 Carlos Miguel FARIAS <carlosmig...@gmail.com>

Víctor Hugo Espínola Domínguez

unread,
Apr 22, 2013, 3:26:06 PM4/22/13
to publicesvfoxpro
Hola Fox Reloaded

Un ejemplo sencillo:

Function MiCursor
Lparameters tnConexion, tcTabla, tcWhere, tcNomCursor

Local lnRetSel As Integer, lcSelect As String, llOk As Boolean

lcSelect = "Select * From " + tcTabla + " Where " + tcWhere

lnRetSel = SQLExec( tnConexion, lcSelect, tcNomCursor  )

llOk = ( lnRetSel > 0 )
If llOk
If Reccount( tcNomCursor ) = 0
Append Blank In ( tcNomCursor )
Endif
Endif

Return ( llOk )

Endfunc

Ejemplo de uso:
cNomCursor = "crsCliente"
lHecho         = MiCursor ( nHandle, "Cliente", "Nombre like '%gonza%'", cNomCursor )

Saludos,
Víctor.


Carlos Miguel FARIAS

unread,
Apr 22, 2013, 8:53:13 PM4/22/13
to Grupo Fox

Una función no podría "devolver" un cursor tal como se entiende normalmente un cursor en vfp. Un cursor es un apuntador a una tabla temporal (ya que si fuera permanente seria simplemente una tabla).
Ese cursor estará disponible en la sesión de datos en que se creo.
Una variable solo puede apuntar a un dato (o a un arreglo) u objeto. No se si un cusor adapter puede, como objeto, puede asimilar se a lo que tu pretendes.
Si pudieras indicar que uso pretedes darle a un cusor dentro una variable, a lo mejor podemos orientar te mejor. Pareciera que estas confundiendo con conceptos de otros leguajes de programación como datasets de vb u objetos iterables de php o python.


Saludos: Miguel, La Pampa (RA)

Reply all
Reply to author
Forward
0 new messages