PC SOFT

AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente. Haga clic aquí para ver la versión en inglés.
  • Presentación
  • Pasar los parámetros por referencia
  • Modo de funcionamiento por defecto
  • Pasar un control, una ventana o un reporte
  • Pasando los parámetros por valor
  • Presentación
  • Solución 1: Usando soportes dobles
  • Solución 2: Utilizando parámetros "locales" en el procedimiento
  • Parámetro correspondiente a un elemento de proyecto
  • Caso especial
  • Pasando una lista de valores
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Presentación
Los parámetros se pueden pasar a un procedimiento:
Pasar los parámetros por referencia

Modo de funcionamiento por defecto

Por defecto, cuando se llama a un procedimiento, los parámetros son passed por referencia (por variable o por dirección). Si el parámetro se modifica en el procedimiento, el proceso que llama al procedimiento recuperará el parámetro con el valor modificado its.
Para pasar un parámetro por variable a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>(<Name of variable passed as parameter>)
Por ejemplo:
Subscript is int = 1
// Before the call to the procedure, Subscript is set to 1
AddOne(Subscript)
// After the call to the procedure, Subscript is set to 2
// -- Declare the procedure
PROCÉDURE AddOne(Counter)
Counter += 1

Pasar un control, una ventana o un reporte

Al llamar a un procedimiento, los parámetros pueden ser un control, una ventana o un reporte. Este objeto (control, ventana o reporte) se trata como cualquier objeto "estándar".
Para pasar un elemento de los parámetros a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>(<Element name>)
Por ejemplo:
// Call the ControlNotVisible procedure
ControlNotVisible(ControlAddress)
// -- Declare the procedure
PROCÉDURE ControlNotVisible(ControlAddress)
ControlAddress..Visible = False
Observaciones:
  • La palabra clave MySelf se utiliza para manipular el control actual.
  • La palabra clave MiVentana se utiliza para manipular la ventana actual.
  • La palabra clave MiInforme se utiliza para manipular el reporte actual.
Pasando los parámetros por valor

Presentación

Durante la llamada a un procedimiento, los parámetros pueden ser IMEULBpassed por el valor'STRIMEULD. Si el parámetro se modifica en el procedimiento, el proceso que llama al procedimiento recuperará el parámetro con its unmodified value.
Se pueden utilizar dos métodos para pasar los parámetros por valor:

Solución 1: Usando soportes dobles

Para pasar un parámetro por valor a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>((<Name of variable passed as parameter>))
Por ejemplo:
Subscript is int = 1
// Before the call to the procedure, Subscript is set to 1
AddOne((Subscript))
// After the call to the procedure, Subscript is still set to 1
// -- Declare the procedure
PROCÉDURE AddOne(Counter)
Counter += 1

Solución 2: Utilizando parámetros "locales" en el procedimiento

Al declarar un procedimiento, las variables pasadas como parámetro pueden convertirse en locales de este procedimiento. Para ello, el parámetro local debe ser precedido por la palabra clave LOCAL. Por ejemplo:
PROCEDURE MyProc(LOCAL Subscript, LOCAL Counter, Number)
Si este parámetro se modifica en el procedimiento, el proceso que llama al procedimiento recuperará el parámetro con its unmodified value.
Observaciones:
  • La palabra clave LOCAL obliga a la copia del elemento pasada como parámetro en los siguientes casos:
    • instancia de clase o instancia de array pasada a un parámetro no mecanografiado.
      Ejemplo:
      Procedure MyProcedure(LOCAL Parameter)
    • instancia de clase pasada a un parámetro tipificado.
      Ejemplo:
      Procedure MyProcedure(LOCAL Parameter is CClass)
  • PCS_SANS_TRADUCTION_US
Versiones 19 y posteriores

Parámetro correspondiente a un elemento de proyecto

Si su procedimiento utiliza elementos de proyecto, hasta la versión 19, el nombre del elemento tenía que ser incluido entre comillas durante la llamada al procedimiento. Por ejemplo:
MyProcedure("WIN_Example")
A partir de la versión 19, se puede pasar el nombre del elemento sin comillas y se puede beneficiar de la finalización sobre el parámetro durante la entrada.
WINDEVWINDEV Mobile Case de windows
Todo lo que tienes que hacer es usar el atributo de <nombre de la ventana> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE WindowName(WindowName is string <window name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sWindowName is string <window name>)

let i = 1
either ResControl = EnumControl(sWindowName, i)
WHILE ResControl <> ""
i++
Trace ("Processing control " +ResControl+" from the window " + sWindowName)
ResControl = EnumControl(sWindowName, i)
END
En este ejemplo, durante la llamada al procedimiento, el parámetro sWindowName contiene el nombre de la ventana. La terminación propondrá todas las ventanas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(WindowName)
  • InputControl("WindowName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la ventana)
WEBDEV - Código Servidor Maletín PageCaso
Todo lo que tienes que hacer es usar el atributo <nombre de la página> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(PageName is string <page name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sPageName is string <page name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sPageName contiene el nombre de la página. La terminación propondrá todas las páginas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(Nombre de la página)
  • InputControl("Nombre de la página")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la página)
caja de Reporte case
Todo lo que tienes que hacer es usar el atributo <reporte name> extension. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(ReportName is string <report name>)
Ejemplo:
// Declare the procedure
PROCÉDURE Checkdata(sReportname is string <report name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sReportName contiene el nombre de reporte. La finalización propondrá todos los informes encontrados en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(ReportName)
  • InputControl("ReportName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la reporte)
Case de fuentes de datos
Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(FileName is Data Source)
Ejemplo:
// Declare the procedure
PROCEDURE CheckData(sFileName is Data Source)
En este ejemplo, durante la llamada al procedimiento, el parámetro sFilewName contiene el nombre de una fuente de datos. La finalización propondrá todas las fuentes de datos (archivos, consultas, variables de fuente de datos) que se encuentran en el proyecto..
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • CheckData(Archivo)
  • CheckData(Consulta)
  • CheckData("Archivo")
  • CheckData("Consulta")
  • CheckData(Nombre de la variable de cadena que contiene el nombre del archivo o consulta)
  • CheckData(Nombre de la variable fuente de datos)
Observación: Para asociar la fuente de datos con un archivo de datos (o consulta) existente, todo lo que hay que hacer es añadir un atributo de extensión específico. En este caso, la cumplimentación automática le permitirá acceder directamente a las posiciones. Ver Variable de fuente de datos para más detalles.
Nueva funcionalidad versión 19

Parámetro correspondiente a un elemento de proyecto

Si su procedimiento utiliza elementos de proyecto, hasta la versión 19, el nombre del elemento tenía que ser incluido entre comillas durante la llamada al procedimiento. Por ejemplo:
MyProcedure("WIN_Example")
A partir de la versión 19, se puede pasar el nombre del elemento sin comillas y se puede beneficiar de la finalización sobre el parámetro durante la entrada.
WINDEVWINDEV Mobile Case de windows
Todo lo que tienes que hacer es usar el atributo de <nombre de la ventana> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE WindowName(WindowName is string <window name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sWindowName is string <window name>)

let i = 1
either ResControl = EnumControl(sWindowName, i)
WHILE ResControl <> ""
i++
Trace ("Processing control " +ResControl+" from the window " + sWindowName)
ResControl = EnumControl(sWindowName, i)
END
En este ejemplo, durante la llamada al procedimiento, el parámetro sWindowName contiene el nombre de la ventana. La terminación propondrá todas las ventanas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(WindowName)
  • InputControl("WindowName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la ventana)
WEBDEV - Código Servidor Maletín PageCaso
Todo lo que tienes que hacer es usar el atributo <nombre de la página> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(PageName is string <page name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sPageName is string <page name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sPageName contiene el nombre de la página. La terminación propondrá todas las páginas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(Nombre de la página)
  • InputControl("Nombre de la página")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la página)
caja de Reporte case
Todo lo que tienes que hacer es usar el atributo <reporte name> extension. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(ReportName is string <report name>)
Ejemplo:
// Declare the procedure
PROCÉDURE Checkdata(sReportname is string <report name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sReportName contiene el nombre de reporte. La finalización propondrá todos los informes encontrados en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(ReportName)
  • InputControl("ReportName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la reporte)
Case de fuentes de datos
Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(FileName is Data Source)
Ejemplo:
// Declare the procedure
PROCEDURE CheckData(sFileName is Data Source)
En este ejemplo, durante la llamada al procedimiento, el parámetro sFilewName contiene el nombre de una fuente de datos. La finalización propondrá todas las fuentes de datos (archivos, consultas, variables de fuente de datos) que se encuentran en el proyecto..
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • CheckData(Archivo)
  • CheckData(Consulta)
  • CheckData("Archivo")
  • CheckData("Consulta")
  • CheckData(Nombre de la variable de cadena que contiene el nombre del archivo o consulta)
  • CheckData(Nombre de la variable fuente de datos)
Observación: Para asociar la fuente de datos con un archivo de datos (o consulta) existente, todo lo que hay que hacer es añadir un atributo de extensión específico. En este caso, la cumplimentación automática le permitirá acceder directamente a las posiciones. Ver Variable de fuente de datos para más detalles.

Parámetro correspondiente a un elemento de proyecto

Si su procedimiento utiliza elementos de proyecto, hasta la versión 19, el nombre del elemento tenía que ser incluido entre comillas durante la llamada al procedimiento. Por ejemplo:
MyProcedure("WIN_Example")
A partir de la versión 19, se puede pasar el nombre del elemento sin comillas y se puede beneficiar de la finalización sobre el parámetro durante la entrada.
WINDEVWINDEV Mobile Case de windows
Todo lo que tienes que hacer es usar el atributo de <nombre de la ventana> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE WindowName(WindowName is string <window name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sWindowName is string <window name>)

let i = 1
either ResControl = EnumControl(sWindowName, i)
WHILE ResControl <> ""
i++
Trace ("Processing control " +ResControl+" from the window " + sWindowName)
ResControl = EnumControl(sWindowName, i)
END
En este ejemplo, durante la llamada al procedimiento, el parámetro sWindowName contiene el nombre de la ventana. La terminación propondrá todas las ventanas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(WindowName)
  • InputControl("WindowName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la ventana)
WEBDEV - Código Servidor Maletín PageCaso
Todo lo que tienes que hacer es usar el atributo <nombre de la página> extensión. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(PageName is string <page name>)
Ejemplo:
// Declare the procedure
PROCÉDURE InputControl(sPageName is string <page name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sPageName contiene el nombre de la página. La terminación propondrá todas las páginas que se encuentran en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(Nombre de la página)
  • InputControl("Nombre de la página")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la página)
caja de Reporte case
Todo lo que tienes que hacer es usar el atributo <reporte name> extension. Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(ReportName is string <report name>)
Ejemplo:
// Declare the procedure
PROCÉDURE Checkdata(sReportname is string <report name>)
En este ejemplo, durante la llamada al procedimiento, el parámetro sReportName contiene el nombre de reporte. La finalización propondrá todos los informes encontrados en el proyecto.
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • InputControl(ReportName)
  • InputControl("ReportName")
  • InputControl(Nombre de la variable de cadena que contiene el nombre de la reporte)
Case de fuentes de datos
Se debe utilizar la siguiente sintaxis:
PROCEDURE ProcedureName(FileName is Data Source)
Ejemplo:
// Declare the procedure
PROCEDURE CheckData(sFileName is Data Source)
En este ejemplo, durante la llamada al procedimiento, el parámetro sFilewName contiene el nombre de una fuente de datos. La finalización propondrá todas las fuentes de datos (archivos, consultas, variables de fuente de datos) que se encuentran en el proyecto..
Las llamadas al procedimiento pueden corresponder a las siguientes sintaxis:
  • CheckData(Archivo)
  • CheckData(Consulta)
  • CheckData("Archivo")
  • CheckData("Consulta")
  • CheckData(Nombre de la variable de cadena que contiene el nombre del archivo o consulta)
  • CheckData(Nombre de la variable fuente de datos)
Observación: Para asociar la fuente de datos con un archivo de datos (o consulta) existente, todo lo que hay que hacer es añadir un atributo de extensión específico. En este caso, la cumplimentación automática le permitirá acceder directamente a las posiciones. Ver Variable de fuente de datos para más detalles.
Caso especial
Versiones 18 y posteriores

Pasando una lista de valores

Durante la llamada a un procedimiento, los parámetros pueden ser a lista de valores ("[1,2,3]" por ejemplo).
Para pasar una lista de valores en parámetro a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>(<List of values>)
Por ejemplo:
// Call the procedure
MyProcedure([1,2,3])
// -- Declare the procedure
PROCÉDURE MyProcedure(Values)
MyArray is array of int = Values
Observaciones:
  • Si el parámetro del procedimiento no tiene ningún tipo, la lista de valores se pasa al procedimiento directamente. Como las listas de valores no pueden manejarse directamente, este parámetro sólo puede utilizarse en las características que aceptan las listas de valores:
    • a una función WLanguage que autoriza las listas de valores (HFilter, HReadSeek, ....).
    • asignación en una variable estructurada (array, clase, estructura,...).
    • llamada a un procedimiento de usuario que permite una lista de valores.
  • Si el parámetro del procedimiento es un array, se asigna automáticamente un array y se llena con los valores encontrados en la lista de valores..
  • Si el parámetro del procedimiento tiene otro tipo, se producirá un error de compilación (o un error de lenguaje WLanguage en tiempo de ejecución si el parámetro real no tiene ningún tipo).
Overriding WLanguage functions: Puede anular las funciones WLanguage que aceptan las listas de valores a través de los parámetros "lista de valores", especialmente:
Nueva funcionalidad versión 18

Pasando una lista de valores

Durante la llamada a un procedimiento, los parámetros pueden ser a lista de valores ("[1,2,3]" por ejemplo).
Para pasar una lista de valores en parámetro a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>(<List of values>)
Por ejemplo:
// Call the procedure
MyProcedure([1,2,3])
// -- Declare the procedure
PROCÉDURE MyProcedure(Values)
MyArray is array of int = Values
Observaciones:
  • Si el parámetro del procedimiento no tiene ningún tipo, la lista de valores se pasa al procedimiento directamente. Como las listas de valores no pueden manejarse directamente, este parámetro sólo puede utilizarse en las características que aceptan las listas de valores:
    • a una función WLanguage que autoriza las listas de valores (HFilter, HReadSeek, ....).
    • asignación en una variable estructurada (array, clase, estructura,...).
    • llamada a un procedimiento de usuario que permite una lista de valores.
  • Si el parámetro del procedimiento es un array, se asigna automáticamente un array y se llena con los valores encontrados en la lista de valores..
  • Si el parámetro del procedimiento tiene otro tipo, se producirá un error de compilación (o un error de lenguaje WLanguage en tiempo de ejecución si el parámetro real no tiene ningún tipo).
Overriding WLanguage functions: Puede anular las funciones WLanguage que aceptan las listas de valores a través de los parámetros "lista de valores", especialmente:

Pasando una lista de valores

Durante la llamada a un procedimiento, los parámetros pueden ser a lista de valores ("[1,2,3]" por ejemplo).
Para pasar una lista de valores en parámetro a un procedimiento, utilice la siguiente sintaxis:
<Procedure name>(<List of values>)
Por ejemplo:
// Call the procedure
MyProcedure([1,2,3])
// -- Declare the procedure
PROCÉDURE MyProcedure(Values)
MyArray is array of int = Values
Observaciones:
  • Si el parámetro del procedimiento no tiene ningún tipo, la lista de valores se pasa al procedimiento directamente. Como las listas de valores no pueden manejarse directamente, este parámetro sólo puede utilizarse en las características que aceptan las listas de valores:
    • a una función WLanguage que autoriza las listas de valores (HFilter, HReadSeek, ....).
    • asignación en una variable estructurada (array, clase, estructura,...).
    • llamada a un procedimiento de usuario que permite una lista de valores.
  • Si el parámetro del procedimiento es un array, se asigna automáticamente un array y se llena con los valores encontrados en la lista de valores..
  • Si el parámetro del procedimiento tiene otro tipo, se producirá un error de compilación (o un error de lenguaje WLanguage en tiempo de ejecución si el parámetro real no tiene ningún tipo).
Overriding WLanguage functions: Puede anular las funciones WLanguage que aceptan las listas de valores a través de los parámetros "lista de valores", especialmente:
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario