Вы находитесь на странице: 1из 31

288 289

Funció n 8.5.21. Funció n


Este objeto permite definir funciones que podrá n ser ejecutadas en diferen-
tes puntos de la aplicació n. Se trata de procesos ejecutables só lo en primer
plano (en sus propiedades no se permite activar Multitarea) y a los que po-
demos pasar pará metros. El origen de estos procesos siempre es Ninguno.

El editor es muy similar al de procesos pero incorpora algo distinto: la po-


sibilidad de especificar pará metros; é stos será n escritos en el control co-
rrespondiente separados por comas (Ejemplo: Parametro1, Parametro2,
Parametro3). En el proceso los pará metros definidos aparecerá n en la lista
de variables locales.
08 Desarrollo completo
de una aplicació n

Ejemplo: funció n para controlar el NIF e

Vamos a ver una funció n que será usada en altas y modificaciones de las
tablas CLIENTES y PROVEEDORES para comprobar si es correcto el NIF
que introduzca el usuario.

En este caso el proceso, que se presenta a continuació n, tendrá un ú nico


pará metro a declarar en la lista de pará metros: nif.

FUNCIÓ N CONTROL-NIF

A lo largo del proceso se usa en distintas líneas la variable local ‘nif’, que no
es otra cosa que el pará metro definido en la funció n.

La ú ltima instrucció n de la funció n, Set retorno funció n, es la que permite


establecer qué es lo que va a retornar la funció n cuando sea llamada. En
este ejemplo retornará o bien nada (querrá decir que el NIF es correcto), o
bien el mensaje informativo de lo que está incorrecto en el nif.

8.5.22. Funciones de Procesos


Las funciones son las instrucciones con las que se construyen los proce-
sos. Pueden tener ninguno, uno o varios pará metros, dependiendo de cada
una.

É stas pueden ser funciones propias de lista, funciones propias de ficha o


funciones comunes de ficha y de lista (estas ú ltimas funciones son las que
pueden usarse en líneas con origen ninguno). Dependiendo del origen que
tenga el proceso podremos usarlas o no. Ademá s, algunas funciones pro-
290 291

pias de lista generan subprocesos de ficha, de los que podremos colgar


funciones propias de ficha.

Editar Al pulsar el botó n Editar del cuadro de diá logo Proceso, o hacer doble
clic sobre las líneas del á rea de proceso, aparece la ventana Línea de Pro-
ceso, donde se informa del origen del subproceso actual y de las funciones
disponibles, las cuales dependen de que el origen sea ficha o lista. Tambié n
hay funciones específicas segú n sea Proceso, Demonio o Funció n.

EDITOR DE PROCESOS Y VENTANA LÍNEA DE PROCESO

Desde estas funciones podremos acceder al Asistente para la creació n de


fó rmulas. Podremos usar variables locales (sin necesidad de declararlas en
primer lugar), hacer uso de pará metros, elegir otros objetos visuales de Ve-
lá zquez Visual como rejillas, formularios, otros procesos, etc.

Algunas funciones devuelven valores que podremos guardar en variables


locales, por ejemplo, si el proceso se ha realizado, el resultado, etc. Otras,
como los retornos, nos devuelven objetos.

Funciones Bá sicas
En este apartado veremos las funciones bá sicas que hay, en general, co-
munes a otros lenguajes informá ticos de alto nivel. É stas son:
08 Desarrollo completo
de una aplicació n

FUNCIONES BÁ SICAS

If
Esta funció n crea un subproceso de lista o de ficha en funció n del origen.
El subproceso se ejecuta si se cumple la expresió n condicional. Es una Fun-
ció n comú n de lista y de ficha.

Hemos de pasarle el pará metro Fó rmula condicional, expresió n algebraica


o booleana (ló gica binaria). Para crear la fó rmula condicional podemos usar
el asistente.

Ejemplo e

En este ejemplo se ejecutará el subproceso de lista o de ficha si se cumple


que el campo IVA del artículo es igual a la variable local ‘iva’, y (&) el cam-
po MARCA es igual a 2.

La condició n sería: (%IVA% = ‘iva’) & (%MARCA% = 2)

Si se tratara de un campo booleano, por ejemplo CASADO, la condició n se-


ría: if -> %CASADO%. De este modo comprobamos que el campo CASA-
DO sea igual a 1.
292 293

Else If
Esta funció n, que siempre tiene que ir precedida de una funció n if, crea un
subproceso de lista o de ficha, en funció n del origen de la línea. El subpro-
ceso se ejecuta si se cumple la expresió n condicional. Es una Funció n co-
mú n de lista y de ficha.

Le pasamos el pará metro Fó rmula condicional, expresió n algebraica o boo-


leana (ló gica binaria).

e Ejemplo

if -> %CAMPO% = 1

Ejecutar proceso -> PROCESO1


else if -> %CAMPO% = 2

Ejecutar proceso -> PROCESO2


else if -> %CAMPO% = 3

Ejecutar proceso -> PROCESO3

Else
Funció n que ejecuta las instrucciones que tenga en su rama, siempre y
cuando no se cumpla el condicional previo (funció n If). La funció n Else tie-
ne que ir precedida de una funció n If a su misma altura. Es una Funció n co-
mú n de lista y de ficha y no tiene pará metros.

e Ejemplo

Si se dan las dos condiciones ejecutará el primer subproceso, en caso con-


trario ejecutará el segundo.

For
Repite las líneas contenidas en el bucle mientras se cumpla la condició n
declarada. La variable del bucle (especificada en el primer pará metro) es
de tipo local, de modo que para acceder a ella se utilizará n apó strofes, co-
mo en el resto de las variables locales. Es una Funció n comú n de lista y de
ficha.

Los pará metros de la funció n son:


08 Desarrollo completo
de una aplicació n

Id variable: identificador de la variable local (obligatorio).

Fó rmula valor inicial: expresió n que se asignará a la variable local al iniciar


el bucle (obligatorio).

Fó rmula condició n: expresió n que se deberá cumplir para continuar con las
iteraciones del bucle (obligatorio).

Fó rmula valor a incrementar: expresió n que incrementa la variable del bucle


en cada iteració n (obligatorio).

Ejemplo e

Demos los siguientes valores a los pará metros de la funció n:

Id variable: VarLoc
Fó r. Inicial: 47

Fó r. Cond.: ‘VarLoc’ < 73

Fó r. Inc.: 2

Este ejemplo ejecuta las funciones (instrucciones) que cuelgan en el sub-


proceso del bucle iniciá ndose la variable local VarLoc con el valor 47 y fi-
nalizando en el 73. La variable será incrementada en pasos de dos en dos.
Nó tese que en la fó rmula condicional la variable del bucle está entre apó s-
trofes, indicando que es una variable local al bucle. El bucle será ejecutado
para valores entre 47, 49, 51, … 69 y 71.

Rem
Esta funció n permite incluir comentarios en los procesos, así nos resultará
mucho má s fá cil su revisió n. Es una Funció n comú n de lista y de ficha.

Hemos de pasarle el pará metro Comentario, texto descriptivo de lo que se


va a realizar en las líneas posteriores del proceso. El comentario no tiene
que estar entrecomillado.

Ejemplo e

Las líneas en las que se encuentra esta funció n se muestran destacadas en


294 295

e negrita y con un icono de informació n al principio de las mismas, con lo que


nos será má s fá cil su localizació n.

Set
Con esta funció n declaramos una variable local del proceso y le asignamos
valores, almacenando en ella el dato calculado por la expresió n fó rmula. Si
la variable local no existe se crea automá ticamente. Como la variable es lo-
cal só lo es posible usarla en este proceso, siendo creada cuando aparezca
esta instrucció n y destruida cuando finalice el proceso. Es una Funció n co-
mú n de lista y de ficha.

Hemos de pasarle los siguientes pará metros:

Identificador: el de la variable local donde se almacena el resultado de la


fó rmula (obligatorio). No debemos usar en el identificador de una variable
local caracteres tales como % (se usa para identificar campos), $ (se usa
para identificar variables globales), “, etc.

Fó rmula: expresió n a evaluar (obligatorio).

e Ejemplo

En este ejemplo guardamos en la variable local ‘MARCAARTI’ el có digo de


la marca del artículo. El origen de la línea del proceso donde se incluye es-
ta funció n será una Ficha de la tabla de Artículos. Los pará metros son:

Identificador: MARCAARTI

Fó rmula: %MARCA%

Modificar variable global


Modifica el contenido de una variable global declarada en el proyecto. Es
una Funció n comú n de lista y de ficha a la que pasamos los siguientes pa-
rá metros:

Identificador: el de la variable global a modificar (obligatorio).

Fó rmula: expresió n para calcular el nuevo contenido (obligatorio).

Id variable local resultado: el de la variable local donde se almacenará el re-


sultado. Será el contenido de la variable global en el momento de ser
guardada en disco (opcional).

e Ejemplo

Modificar variable global -> ULT-PEDIDO-C,%ULT-PEDIDO-C%+1, NuevoPedido


08 Desarrollo completo
de una aplicació n

Pedir dato
Pide un dato al usuario y lo guarda en la variable local con el identificador
dado. Para usar esta variable local en las expresiones fó rmula, al igual que
todas las variables locales, su identificador debe ir entre apó strofes (‘). Es
una Funció n comú n de lista y de ficha.

Hemos de pasarle los pará metros siguientes:

Descripció n: texto a presentar al usuario (opcional).

Identificador: identificador de la variable local donde se almacena el dato in-


troducido por el usuario (obligatorio).

Tipo: tipo de dato a guardar. Hay tres tipos: Numé rico, Texto y Fecha (obli-
gatorio).

Identificador de la variable local que retorna SI/NO: variable que recogerá si


el usuario ha pulsado aceptar o cancelar (opcional).

Ejemplo e

Este ejemplo visualizará una ventana con el texto ‘Escriba la fecha límite’ y
un control de edició n para introducir dicha fecha, la cual será guardada en
la variable local ‘FECHAMAX’. Los pará metros son:

Descripció n: Escriba la fecha límite.

Identificador: FECHAMAX

Tipo: Fecha

Mensaje
Muestra en una ventana el contenido evaluado de una fó rmula junto con el
icono seleccionado. Es una Funció n comú n de lista y de ficha a la que he-
mos de pasar los siguientes pará metros:

Mensaje: expresió n fó rmula con el mensaje que aparecerá en pantalla (opcional).

Icono: el que se mostrará junto con el mensaje (opcional). Hay tres: excla-
mació n , stop e informació n . Exclamació n

Segundos Timeout: segundos transcurridos los cuales la ventana con el Stop


mensaje será cerrada automá ticamente. Si este pará metro es 0, la ventana
permanecerá abierta hasta que intervenga el usuario. Muy ú til la utilizació n Informació n
de time out para evitar que, si se presenta el mensaje y no está presente el
usuario, no se paralice la ejecució n del proceso hasta que é ste intervenga.

Título: título de la ventana en la que se presenta el mensaje (opcional).


296 297

Si presentamos un mensaje en un evento pierde foco de un formulario, pa-


ra que el foco no se pierda y vuelva al control en el que se encontraba he-
mos de añ adir la funció n Set retorno proceso =no tras la funció n Mensaje.
Por ejemplo, supongamos que en la pé rdida de foco de un control de edi-
ció n de un formulario asociamos un proceso que comprueba si el valor in-
troducido es vá lido. Si no lo es se presenta un mensaje, pero el foco se per-
derá si no añ adimos Set retorno proceso=no. Si lo añ adimos, el foco volve-
rá al control de edició n y podremos introducir un valor de nuevo.

e Ejemplo

Visualizaremos una ventana con el texto del mensaje personalizado para el


usuario que intenta ver un formulario para el que no tiene el nivel de privilegio
requerido. El texto está entre comillas puesto que se trata de una expresió n
tipo fó rmula. La variable de sistema u devuelve el nombre del usuario actual.

Mensaje: “Lo siento, “ + u + “. No está Ud. autorizado a ver estos datos.”

e Ejemplo

Ahora presentaremos una ventana con el texto del mensaje personalizado,


en el que se muestra el nombre del Cliente.

Mensaje: “El cliente “ + %NOMBRE% + “ no tiene albaranes para facturar.”

Ejecutar proceso
Ejecuta el proceso dado en el primer pará metro y retorna cuando finaliza.
Es una Funció n comú n de lista y de ficha a la que pasamos los pará metros
siguientes:

Identificador proceso: identificador del proceso hijo a ejecutar (obligatorio).

Variable retorno OK subproceso (Sí/No): inicializació n de una variable local


del proceso donde se recogerá si el proceso ejecutado ha retornado co-
rrectamente o no.

Modo Cliente-Servidor: este pará metro es exclusivo para aplicaciones que


vayan a ser ejecutadas con la arquitectura cliente-servidor de Velá zquez Vi-
sual (Servidor de Aplicaciones de Velá zquez Visual). Existen dos modos po-
sibles de ejecutar los subprocesos:

Local ->: el subproceso será ejecutado en el Cliente.

Servidor ->: el subproceso será ejecutado en el Servidor (a estos procesos


los llamamos procesos en tercer plano).

Cuando desde un proceso principal ejecutamos un subproceso mediante


esta instrucció n, la ejecució n del proceso principal no continuará hasta que
no termine el subproceso.
08 Desarrollo completo
de una aplicació n

Ejemplo e

En este ejemplo, la variable local bOK es inicializada a cero antes de eje-


cutar el subproceso MAILINGS-BAJA. Si el subproceso retorna con un
valor distinto de cero se ejecutará n las instrucciones que cuelgan de la
funció n. En este caso, la funció n set establece el valor 1 para la variable
local bOK.

Por ú ltimo, se comprueba el valor de la variable bOK. Si la variable contiene


el valor cero (!’bOK’), hacemos que el proceso principal retorne con un NO.

Ejecutar proceso sin origen


Ejecuta el proceso con origen ninguno dado en el pará metro y retorna cuan-
do finaliza. Es una Funció n comú n de lista y ficha.

Hemos de especificar los pará metros siguientes:

Identificador del proceso: identificador del proceso con origen ninguno a


ejecutar (obligatorio).

Variable retorno OK subproceso (opcional): devolverá 0 en el caso de que el


subproceso sin origen se haya ejecutado una instrucció n Set retorno pro-
ceso = NO, o en el caso de que no se haya ejecutado correctamente. En ca-
so contrario devolverá 1.

Modo Cliente-Servidor: este pará metro es exclusivo para aplicaciones que


vayan a ser ejecutadas con la arquitectura cliente-servidor de Velá zquez Vi-
sual (Servidor de Aplicaciones de Velá zquez Visual). Existen dos modos po-
sibles de ejecutar los subprocesos:

Local ->: el subproceso será ejecutado en el Cliente.

Servidor ->: el subproceso será ejecutado en el Servidor (a estos procesos


los llamamos procesos en tercer plano).

Deshacer transacción
Deshace la transacció n en curso. Es una Funció n comú n de lista y ficha a
la que no hemos de pasar pará metros. Só lo es vá lida para aplicaciones eje-
cutadas con la versió n cliente-servidor, en aplicaciones ejecutadas con
VRunner no funcionará .

Finalizar proceso
Esta funció n nos permite finalizar la ejecució n del proceso en un punto de-
terminado. Es una Funció n comú n de lista y de ficha y no tiene pará metros.
298 299

Punto donde se puede abortar


Esta funció n permite al usuario final interrumpir un proceso que se esté eje-
cutando en segundo plano (en multitarea). Con esta funció n lo que se pre-
tende es minimizar los problemas que pueda generar una interrupció n del
proceso, hacié ndolo de una manera controlada. Para ello, en el Ejecutor
tendremos que acceder al cuadro de procesos en segundo plano y pulsar
el botó n correspondiente. Es una Funció n comú n de lista y de ficha.

Hemos de especificar la Fó rmula mensaje al abortar, expresió n fó rmula que


se presentará en tiempo de ejecució n cuando el usuario haya abortado el
proceso.

En el ejecutor se puede abortar un proceso desde la ventana Procesos en


ejecució n, si tenemos alguna instrucció n Punto donde abortar. Si pulsamos
el botó n abortar, lanzamos al proceso seleccionado el mensaje abortar.
Cuando el proceso pase por una instrucció n Punto donde abortar, lanzará
un mensaje si tenemos cubierto el pará metro mensaje, y abortará el proce-
so. Si hay fichas bloqueadas las desbloqueará pero no realizará modifica-
ció n alguna a partir de este punto.

e Ejemplo

Imaginemos un proceso que realiza facturas y recibos. El lugar ideal para


poner un Punto donde abortar sería al finalizar una factura y sus recibos, de
modo que tenemos un modo de abortar limpio, con el que podremos deci-
dir dó nde se detendrá un proceso independientemente de donde esté eje-
cutá ndose cuando el usuario decida abortar.

Funciones de Arrays
Un array es una matriz o vector, un grupo de variables que se denominan
con un mismo nombre y un nú mero de posició n. No almacena un ú nico va-
lor, sino una lista ordenada de ellos. En Velá zquez Visual estos valores pue-
den ser cadenas de texto, nú meros, fechas y horas, no siendo necesario
definir el tipo de dato que se almacenará a la hora de crear un array. Es má s,
podemos incluir datos de diferente tipo en un mismo array.

Para trabajar con arrays usaremos las siguientes funciones:


08 Desarrollo completo
de una aplicació n

FUNCIONES DE ARRAYS

Array: Crear
Esta instrucció n crea un array en un proceso. Es una Funció n comú n de lis- ta
y de ficha a la que hemos de pasar el pará metro Identificador array: el
identificador que se dará al array en el proceso.

Array: Tamaño
Con esta funció n obtenemos el nú mero de ítem de un array definido en el
proceso. Es una Funció n comú n de lista y de ficha en la que especificamos
los pará metros siguientes:

Identificador array: en el menú desplegable seleccionamos el array definido


en el proceso del que queremos conocer su tamañ o.

Variable retorno tamañ o: variable local donde se almacenará el tamañ o del


array seleccionado en el primer pará metro.

Array: Get ítem


Con esta instrucció n obtenemos un elemento de un array declarado en el
proceso. Es una Funció n comú n de lista y de ficha. Los pará metros que he-
mos de especificar son:

Identificador array: en el menú desplegable seleccionamos el array definido


en el proceso del que queremos obtener un ítem.
300 301

Posició n: posició n del array en la que se encuentra el ítem a obtener. En es-


te pará metro podremos especificar tanto una constante como una expre-
sió n fó rmula. Ojo: la primera posició n es la nú mero 0.

Variable retorno dato: variable local donde se guardará el ítem obtenido.

Array: Set ítem


Esta instrucció n establece el valor de un ítem de un array declarado en el
proceso. Es una Funció n comú n de lista y de ficha. Los pará metros que he-
mos de pasarle son:

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso en el que queremos establecer el valor de un ítem.

Posició n: es la posició n del array donde está el ítem. En este pará metro po-
dremos especificar tanto una constante como una expresió n fó rmula. La
primera posició n es la nú mero 0.

Fó rmula dato: expresió n fó rmula del valor a establecer en el ítem.

Array: Añadir ítem


Con esta instrucció n añ adimos un ítem al final de un array declarado en el
proceso. Es una Funció n comú n de lista y de ficha.

Los pará metros que necesita son:

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso en el que queremos añ adir un ítem.

Fó rmula dato: expresió n fó rmula del valor del ítem a añ adir en el array.

Array: Insertar ítem


Con esta instrucció n insertamos un ítem dentro de un array declarado en el
proceso. Es una Funció n comú n de lista y de ficha.

Necesita los siguientes pará metros:

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso en el que queremos insertar un ítem.

Posició n: posició n del array donde insertar el ítem. En este pará metro po-
dremos especificar tanto una constante como una expresió n fó rmula. La
primera posició n es la nú mero 0.

Fó rmula dato: expresió n fó rmula del valor del ítem a insertar en el array.

Array: Suprimir ítem


Con esta funció n eliminamos un ítem de un array declarado en el proce-
so. Es una Funció n comú n de lista y de ficha en la que hemos de espe-
cificar:
08 Desarrollo completo
de una aplicació n

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso del que queremos suprimir un ítem.

Posició n: posició n del ítem a suprimir. En este pará metro podremos especi-
ficar tanto una constante como una expresió n fó rmula. La primera posició n
es la nú mero 0.

Array: Suprimir todos


Mediante esta instrucció n eliminamos todos los ítems de un array declarado en
el proceso. Es una Funció n comú n de lista y de ficha en la que hemos de es-
pecificar el pará metro Identificador array: en el menú desplegable selecciona-
mos el array definido en el proceso del que queremos eliminar todos los ítems.

Array: Ordenar alfabético


Esta instrucció n ordena alfabé ticamente los ítems de un array definido en el
proceso. Es una Funció n comú n de lista y de ficha en la que especificamos:

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso cuyos ítems se han de ordenar alfabé ticamente.

Orden: podremos optar entre dos modos, Ascendente o Descendente.

Array: Ordenar numérico


Esta instrucció n ordena numé ricamente los ítems de un array definido en el
proceso. Es una Funció n comú n de lista y de ficha a la que pasamos los pa-
rá metros:

Identificador array: en el menú desplegable seleccionamos el array definido


en el proceso cuyos ítems se han de ordenar numé ricamente.

Orden: optamos entre dos modos, Ascendente o Descendente.

Array: Ordenar fechas


Esta instrucció n ordena por fecha los ítems de un array definido en el proceso.
Es una Funció n comú n de lista y de ficha. Los pará metros que necesita son:

Identificador array: en el menú desplegable seleccionaremos el array defini-


do en el proceso cuyos ítems se han de ordenar por fecha.

Orden: de nuevo optamos entre modo Ascendente y Descendente.

Array: Ordenar horas


Esta instrucció n ordena por hora los ítems de un array definido en el proce-
so. Es una Funció n comú n de lista y de ficha.

Los pará metros que necesita son:

Identificador array: en el menú desplegable seleccionamos el array definido


en el proceso cuyos ítems se han de ordenar por hora.

Orden: optamos entre dos modos, Ascendente o Descendente.


302 303

Retornos
Los Retornos son funciones que nos devuelven un objeto: un texto, una pá -
gina web, un proceso. Estas funciones no se realizará n hasta que no se ha-
ya terminado la ejecució n del proceso. Esto es debido a que los retornos no
permiten devolver el control al proceso: los retornos que se lancen durante
la ejecució n de un proceso se van almacenando en memoria para que,
cuando termine la ejecució n del mismo, se disparen.

Esto implica que si despué s de aparecer una funció n retorno en un proce-


so, a continuació n eliminamos registros o modificamos alguno de los cam-
pos, variables, etc., como lo que é sta devuelve se evalú a en el momento
que se ejecuta, es decir, al final, los valores será n distintos de los que pudi-
mos tener en cuenta a la hora de enviar el retorno.

En la figura hemos añ adido un retorno que nos presenta una rejilla con una
lista de registros. Sin embargo, a continuació n viene una funció n que reco-
rre la lista eliminando todas las fichas. Aunque cuando fue lanzado el retor-
no había datos, como se evalú a al final del proceso, se encuentra con que
no hay registros y nos devuelve la rejilla vacía. Lo mismo ocurre si hemos
modificado algú n campo, una variable global que esté presente en un in-
forme, etc.

Los retornos no funcionan en procesos multitarea, por lo que en aquellos en


los que se incluya alguna de estas funciones tienen que ser lanzados en pri-
mer plano siempre. Si un proceso multitarea tiene retornos, é stos será n ob-
viados y no se presentará n al usuario final.

Los retornos que podemos usar son:


08 Desarrollo completo
de una aplicació n

FUNCIONES DE RETORNO

Añadir retorno
Funció n comú n de lista y de ficha que guarda el recurso declarado en los
pará metros para presentarlo al finalizar el proceso.

Utilizaremos esta funció n para presentar con un objeto visual los resultados
de un proceso. Por ejemplo, el filtrado de una lista presentado en una reji-
lla, el resultado de un tubo de ficha y de un tubo de lista, creando una ca-
becera y unas líneas de una factura, presentado en un formulario etc.

Podemos añ adir conjuntamente retornos de ficha y de lista.

Todos los retornos son presentados en el orden en que fueron añ adidos.

Los pará metros que hemos de pasarle a la funció n son:

Identificador del recurso: identificador del objeto visual de Velá zquez Visual.
En el caso de que el origen sea una lista, el objeto será una rejilla, y si el ori-
gen es una ficha, el objeto será un formulario (obligatorio).

Identificador Toolbar: esta opció n só lo estará disponible cuando el retorno


se efectú e sobre una lista. Permite especificar la barra de herramientas con
la que se presentará la rejilla seleccionada en el pará metro anterior. É sta po-
drá ser la está ndar de Velá zquez Visual, una barra de herramientas perso-
nalizada, o ninguna.
304 305

Fó rmula título: só lo estará disponible cuando el retorno se efectú e sobre una lis-
ta. Mediante una expresió n fó rmula podremos establecer el título de la ventana.

e Ejemplo

Vamos a lanzar un proceso desde una lista de PROVEEDORES, de modo


que primero cargamos el histó rico de ALBARANES de los proveedores de
la lista. A continuació n filtramos la lista de ALBARANES por su campo FAC-
TURADO (campo de tipo booleano). Como filtro hemos puesto !%FACTU-
RADO%, de modo que se cargará n todos los albaranes sin facturar de los
clientes de la lista.

El origen de la siguiente línea es una lista de albaranes, luego la funció n


Añ adir Retorno en su pará metro pedirá una rejilla de ALBARANES, así que
visualizaremos una rejilla con todos los albaranes no facturados de los
clientes de la lista original.

Añadir retorno proceso


Esta funció n guarda el proceso declarado en los pará metros para ejecutar-
lo al finalizar el proceso desde el que se ha llamado. Es una Funció n comú n
de lista y de ficha.

Podemos añ adir conjuntamente procesos de ficha y de lista, siendo ejecu-


tados los procesos en el orden en que fueron añ adidos como retorno.

Esta funció n se diferencia de la funció n Ejecutar proceso en que el proceso


que se ha añ adido como retorno se ejecutará cuando finalice el proceso
“llamador”, independientemente del punto en el que se haya incluido la ins-
trucció n. Por el contrario, la funció n Ejecutar proceso disparará el proceso
en el punto donde se haya incluido esta funció n.

Es necesario especificar el pará metro Identificador del proceso: identifica-


dor del proceso a ejecutar. En el caso de que el origen sea una lista, el pro-
ceso será uno que tenga origen lista, y si el origen es una ficha, el proceso
será uno que tenga origen ficha.

Añadir retorno texto


Guarda el recurso declarado en los pará metros para presentarlo al finalizar
el proceso. Es una Funció n comú n de lista y de ficha pensada para la pre-
sentació n de Pá ginas Html; por tanto, el texto que se presente deberá ser
có digo Html. El proceso deberá ser ejecutado por el servidor HTTP de Ve-
lá zquez, que devolverá al explorador web cliente la pá gina creada.

Hemos de especificar el pará metro Fó rmula de texto a retornar, de modo


que el texto de la fó rmula deberá ser có digo Html o una variable local del
proceso que haya sido creada con la funció n Html: Ejecutar componente.
08 Desarrollo completo
de una aplicació n

Ejemplo e

En una aplicació n se tiene la tabla ARTISTAS y un histó rico de las OBRAS


de dichos artistas. Desde un proceso se pretende generar una pá gina web
en la que se presente el nombre de todos los artistas de la tabla y, tras ca-
da artista, todas sus obras (la fotografía y su título). El proceso tendría ori-
gen ninguno y sería:

Rem -> Composició n de la cabecera de la pá gina html

Set -> header, “<html> <head> <title>Listado de Artistas</title> </head>


<body> <p align=\ccenter\c><font face=\cArial Rounded MT Bold\c si-
ze=\c6\c color=\c#800000\c>ARTISTAS</font></p><hr>”

Set -> body, “”

Cargar lista -> ARTISTAS, NOMBRE

Recorrer lista solo lectura

Rem -> Composició n del cuerto del mensaje, en é l se concatena el nom-


bre del artista y un salto de línea

Set -> artista, %NOMBRE% + “<br>”

Set -> body, ‘body’ + ‘artista’

Cargar histó rico -> OBRAS, ARTISTAS

Recorrer lista solo lectura

Rem -> Composició n de la parte del cuerpo del mensaje en la que se


incluirá la fotografía y el nombre de la obra

Set -> obra, “<p align=\ccenter\c><font face=\cAvantGarde Md BT\c size=\c3\c


color=\c#000080\c><strong>” +%NOMBRE%+ “</strong></font></p> <p
align=\ccenter\c><img src=\c_visd_”+ %FOTO% + “.jpg\c width=\c” + %FO-
TO-CX% + “\c height=\c” + %FOTO-CY% + “\c alt=\c”+%FOTO%+”\c></p>”

Set -> body, ‘body’ + ‘obra’

Rem -> Presentació n de la pá gina Html, componiendo el texto con el


contenido de las variables locales ‘header’, ‘body’ y el có digo Html de
fin de cuerpo y de pá gina

Añ adir retorno texto -> ‘header’+’body’+”</body></html>”

A tener en cuenta en el proceso: para la especificació n de pará metros en Html


é stos van entrecomillados (“). Puesto en las fó rmulas la comilla está reservada
para inicio y fin de una fó rmula de texto, se utiliza la secuencia de escape \c,
que inserta una comilla. Para la especificació n de los campos no se utiliza un
comando AVP (los propios de Velá zquez), pues é stos solamente pueden ser
306 307

e utilizados en los objetos Pá gina Html y Componente Html. En este caso se es-
pecifica directamente el identificador del campo (por ejemplo %NOMBRE%).

Cuando presentamos una imagen externa conviene insertar el comando


ADVERTENCIA _visd_ (propio de Velá zquez Visual) detrá s del atributo src. Así informamos
al Servidor de Aplicaciones que lo que servirá a continuació n es una ima-
El ejemplo que acabamos gen, y como tal ha de tratarla.
de desarrollar resulta mucho
más sencillo trabajando con Añadir retorno URL
componentes HTML.
Guarda una direcció n URL para abrirla al finalizar el proceso con el Explo-
rador Web que incorporan tanto el Ejecutor de Proyectos (ejecutable VRun-
ner) como el Navegador de Velá zquez Visual (ejecutable Irunner). Es una
Funció n comú n de lista y de ficha en la que especificaremos la URL a dis-
parar en el pará metro Fó rmula URL.

e Ejemplo

En una tabla CLIENTES se tiene un campo de tipo alfabé tico, WEB, en el


que almacenamos la direcció n web del cliente. Podemos disparar un pro-
ceso desde una ficha de CLIENTES que abra la pá gina web del cliente edi-
tado en la misma. Para ello incluiríamos la línea:

Añ adir retorno URL -> %WEB%

e Ejemplo

El ejemplo que explicamos a continuació n es específico para aplicaciones


ejecutadas en la versió n cliente-servidor de Velá zquez Visual, es decir, apli-
caciones abiertas en un Servidor de Aplicaciones de Velá zquez Visual y ata-
cadas con el Navegador de Velá zquez Visual. No es vá lido para aplicacio-
nes ejecutadas con el ejecutor VRunner.

Se trata de atacar desde el Navegador de Velá zquez Visual la aplicació n que


estamos ejecutando, pero vía web. En el proyecto habremos creado pá ginas
html; una con el identificador INDEX, que será la que se presente por defecto.

Dispararemos un proceso como el que sigue:

If -> fEsClienteServidor()

Añ adir retorno URL -> fGetWebAplicacion()

Antes de lanzar la aplicació n se interroga al Servidor de Aplicaciones si tie-


ne arrancado el Servidor HTTP. Para ello se utiliza la funció n de fó rmulas fEs-
ClienteServidor(), que devuelve 1 si está arrancado el servidor Web y 0 si no.

Si el servidor web está arrancado, se dispara la pá gina principal de la apli-


cació n que está siendo ejecutada en ese momento. É sta la devuelve la fun-
ció n de fó rmulas fGetWebAplicacion(). Esta funció n ya devuelve la pasarela
08 Desarrollo completo
de una aplicació n

cgi completa, de modo que si el Servidor tiene la IP: 212.155.155.155 y la e


aplicació n se llama HOMERO, lo que devolverá la funció n de fó rmulas
fGetWebAplicacion() será : Http://212.155.155.155/cgi-vel/HOMERO/

En tiempo de ejecució n, al disparar este proceso, se lanzará el explorador


web que incorpora el Navegador de Velá zquez Visual, con la pá gina princi-
pal de la aplicació n.

La funció n Añ adir retorno URL nos permite tener un potente generador de


informes en una aplicació n, só lo que en vez de usar objetos Informe lo que
se crearían serían Pá ginas HTML con la informació n a presentar.

Set retorno proceso = NO


Con esta funció n cambiamos el valor de retorno de un proceso que por de-
fecto es SI. Cuando se ejecuta esta funció n el proceso “llamador” recibe un
NO, con lo que se inhibe su finalizació n. Es una Funció n comú n de lista y
de ficha a la que no hemos de pasarle pará metros.

Ejemplo e

En un formulario se ha declarado un proceso asociado al evento Pierde Fo-


co de un campo. Al recibir el mensaje de que va a perder el foco, se ejecu-
ta dicho proceso, entre cuyas instrucciones se encuentra Set retorno pro-
ceso = NO. Al finalizar el proceso y retornar NO, se cancela la pé rdida de
foco del control, permaneciendo el foco en é l.

Ejemplo e

En un formulario de CLIENTES se ha declarado un proceso previo al Alta de


una ficha en el que se evalú a si el campo nombre está vacío, en cuyo caso
no se dará el alta. Al recibir Velá zquez Visual el mensaje de que se va a pro-
ducir un alta, ejecuta el proceso previo y, si se cumple la condició n, recibe
un Set retorno proceso = NO. La consecuencia es que Velá zquez Visual no
realiza el Alta. Las líneas de có digo serían:

if -> fCampoVacio( %NOMBRE% )


Mensaje -> “Ha de escribir el nombre del cliente”, 0
Set retorno proceso = No

El proceso evalú a si está vacío el campo NOMBRE del cliente, en cuyo ca-
so lanza un mensaje advirtié ndolo y cancela el alta.

Imprimir informe
Imprime el informe que especifiquemos con los registros de la lista actual.
Es una Funció n propia de lista a la que hemos de pasar los pará metros:

Identificador informe: identificador del informe a imprimir (obligatorio).

Impresora ló gica: puede ser la asignada al informe o cualquiera de las que


tenemos definidas en el proyecto.
308 309

Esta funció n de informes ha de ser disparada desde una línea cuyo origen
sea una Lista de una tabla de datos. Por tanto, si queremos imprimir una fi-
cha determinada, la lista que alimente esta funció n deberá contener ú nica-
mente el registro a imprimir.

e Ejemplo

Al dar de alta un proveedor queremos imprimir un informe con los datos del
mismo. Segú n esto vemos que el origen del proceso ha de ser una ficha de
la tabla PROVEEDORES.

Este proceso carga la lista de Proveedores por su índice CODIGO, utilizan-


do como resolució n 1ª el có digo de la ficha del formulario. El resultado se-
rá una lista de Proveedores con un ú nico registro: el que ha sido dado de
alta en el formulario.

Por ú ltimo, tendríamos que asociar este proceso como Posterior a la pulsa-
ció n del botó n Aceptar. No puede ser Anterior porque este evento es dis-
parado antes de que la ficha sea guardada en el disco y, por tanto, si la fi-
cha no existe, no puede ser impresa.

Set retorno función


Funció n Permite establecer un retorno de un objeto visual funció n ( ) de Velá z-
quez Visual. Es una Funció n específica para el objeto visual funció n y hemos
de pasarle el pará metro Fó rmula dato de retorno, expresió n fó rmula con el
dato a retornar.

e Ejemplo

Tenemos una funció n, a la que llamaremos FUNCION, que contiene la ins-


trucció n siguiente:

Set retorno funció n -> “Esto es el retorno de la funció n”

Si un proceso introducimos la línea:

Set -> RetornoFuncion, «FUNCION()

Entonces la variable local RetornoFunció n devolverá la cadena Esto es el


retorno de la funció n.

Ficha y campos
Las funciones pertenecientes a este grupo trabajan con fichas (registros), y
algunas concretamente con campos. El origen de todas ellas ha de ser, por
tanto, una ficha.
08 Desarrollo completo
de una aplicació n

FUNCIONES DE FICHA Y CAMPOS

Modificar campo
Esta funció n modifica el contenido de un campo que especifiquemos con el
resultado de una fó rmula. Es una Funció n propia de ficha a la que hemos
de pasar los pará metros:

Identificador campo: identificador del campo a modificar (obligatorio).

Fó rmula nuevo dato: expresió n tipo fó rmula para calcular el nuevo conteni-
do del campo (obligatorio).

Ejemplo e

Supongamos que queremos modificar el valor del campo PVM (Precio Ven-
ta al por Mayor) subié ndolo un 10%. Para ello introduciríamos la siguiente
línea de có digo:
Modificar campo -> PVM, %PVM% * 1.1

Get campo
Devuelve el contenido de un campo sin que se evalú e la fó rmula que lo con-
tenga. Por ejemplo, para obtener la fó rmula escrita por un usuario en un
campo de tipo fó rmula diná mica o para obtener la etiqueta de un campo
objeto. Es una Funció n propia de ficha.

Hemos de especificar los siguientes pará metros:


310 311

Identificador campo: el identificador del campo del que queremos obtener


su contenido.

Variable donde retorna contenido campo: especificació n de la variable local


donde queremos almacenar el contenido del campo (no es necesario que la
declaremos primero).

Check fórmula dinámica


Comprueba si una fó rmula diná mica escrita por un usuario es correcta o no.
Es una Funció n propia de ficha que necesita los pará metros:

Identificador campo: identificador del campo fó rmula diná mica a evaluar.

Variable retorno OK: variable local del proceso que recogerá si la fó rmula
escrita por el usuario es correcta (1) o no (0).

Variable retorno mensaje: variable local del proceso que recogerá , en caso
de ser incorrecta la fó rmula, un texto con el error generado.

Un proceso con esta instrucció n podría ejecutarlo en un formulario, como


evento de pé rdida de foco de un control de edició n de un campo tipo fó rmu-
la diná mica, con lo que si el usuario ha introducido una fó rmula incorrecta, no
dejará continuar hasta corregir el error, devolvié ndonos al control de edició n.

Limpiar campo objeto


Esta funció n limpia el contenido de un campo de tipo objeto, es decir, lo de-
ja vacío. Es una Funció n propia de ficha en la que hemos de especificar el
Identificador Campo: el identificador del campo objeto cuyo contenido que-
remos limpiar.

Importar texto
Con esta funció n importamos el contenido de un fichero de texto en un
campo de tipo alfabé tico (alfabé tico, alfa128, alfa64 y alfa40) u objeto tex-
to. Es una Funció n propia de ficha en la que especificamos:

Identificador Campo: identificador del campo en el que queramos importar


el contenido del archivo de texto.

Senda fichero origen: senda completa del fichero que deseamos importar.

Variable local que retorna Sí/No Importó : aquí declaramos una variable lo-
cal para recoger si se importó el fichero (1) o no (0).

Este proceso, que tiene origen en una ficha, lanza la ventana de selecció n
del fichero para que el usuario pueda seleccionar el fichero a importar. Im-
08 Desarrollo completo
de una aplicació n

porta el contenido del fichero de texto a un campo de tipo objeto texto de


la tabla, de modo que si no lo importa lanza un mensaje de aviso.

Exportar texto
Con exportar texto generamos un fichero de texto a partir del contenido de
un campo alfabé tico (alfabé tico, alfa128, alfa64 y alfa40), objeto texto o fó r-
mula alfabé tica. Es una Funció n propia de ficha en la que debemos especi-
ficar los pará metros:

Identificador campo: identificador del campo alfabé tico, objeto texto o fó r-


mula alfabé tica que deseamos exportar.

Senda fichero de destino: senda en la que se va a exportar el fichero de texto.

Identificador variable de retorno Sí/No exportó : en este pará metro podre-


mos declarar una variable local del proceso que recogerá si se ha exporta-
do (1) o no (0) el texto.

Este proceso, que tiene su origen en una lista de Proveedores, guarda la sen-
da en la que se van a generar los archivos de texto en una variable local (‘path’).
A continuació n recorre la lista de proveedores en modo de solo lectura.

En la variable local ‘fichero’ concatena la variable local que contenía la sen-


da, el nombre del proveedor y le añ ade un punto y la extensió n TXT. En la
siguiente línea crea el fichero de texto con el nombre del proveedor con el
contenido de un campo de tipo objeto texto de la tabla. Si no pudo expor-
tar nos avisa con un mensaje.

Importar dibujo
Esta funció n importa un archivo de imagen a un campo de tipo Objeto di-
bujo. Es una Funció n propia de ficha que necesita la especificació n de los
pará metros siguientes:

Identificador campo: nombre del campo de tipo objeto dibujo que va a re-
cibir la importació n de la imagen (obligatorio).

Senda fichero origen: especificació n de la vía de acceso al fichero de don-


de se va a importar (obligatorio). Aquí podemos utilizar las variables del sis-
tema c y d (directorio actual y de la aplicació n, respectivamente) y/o varia-
bles locales (o globales, o constantes) que contengan la senda del archivo
a importar.

Identificador variable de Retorno Sí/No importó : variable en la que se va a


guardar si se importó (1) o no (0) el dibujo (opcional).
312 313

e Ejemplo

Para importar un dibujo que se llame DIBUJO.BMP y que se encuentre en


el directorio de la aplicació n introduciríamos la siguiente línea:

Importar dibujo -> FOTO, d + “\\Foto.bmp”, bOK

Esta funció n importará el contenido del archivo Foto.bmp (para incluir en


una cadena la barra de directorio hay que escribirla dos veces: \\), en el
campo FOTO de la ficha actual. En la variable local ‘bOK’ guardará el valor
de si importó (1) o no (0).

Exportar dibujo
Crea un archivo con la imagen contenida en un campo de tipo objeto dibu-
jo. Es una Funció n propia de ficha en la que hemos de especificar:

Identificador campo: nombre del campo de tipo objeto que va a producir la


exportació n de la imagen (obligatorio).

Senda fichero destino: especificació n de la vía de acceso al fichero donde se


va a exportar (obligatorio). Aquí podemos utilizar las variables del sistema c
y d y/o variables locales que contengan la senda del archivo a exportar.

Identificador variable de Retorno SI/NO exportó : variable en la que se va a


guardar si se exportó (1) o no (0) el dibujo (opcional).

e Ejemplo

En la tabla EMPLEADOS tenemos un campo, FOTO, que es de tipo Objeto Di-


bujo. Queremos crear un proceso asociado al formulario de modificaciones de
EMPLEADOS que exporte la fotografía del empleado editado a un archivo BMP.
El proceso debe tener su origen, por tanto, en una ficha de EMPLEADOS. Sería:

Mediante la funció n Set creamos una variable local del proceso, a la que he-
mos llamado archivo, y le asignamos como contenido el campo %NOM-
BRE% del empleado má s la extensió n .bmp. Así, al archivo de imagen crea-
do se identificará con el nombre del empleado.

Con la funció n Pedir dato pedimos al usuario que introduzca la senda com-
pleta del directorio donde queremos guardar el archivo a exportar. En una
08 Desarrollo completo
de una aplicació n

variable local del proceso, que hemos llamado bOK, se guardará si el usua- e
rio ha aceptado el formulario (1) o no (0). En otra variable local de tipo tex-
to, path, guardamos la ruta escrita por el usuario.

A continuació n se evalú a (if) si la variable local bOK contiene un 1. En caso


afirmativo continuará con el proceso, en caso negativo se parará la ejecu-
ció n del mismo.

Se vuelve a asignar el valor 0 a la variable local bOK, pues la utilizaremos


de nuevo para realizar otra evaluació n.

La siguiente funció n es Exportar dibujo. Como primer pará metro especificamos el


nombre del campo de tipo Objeto Dibujo del cual se va a copiar la imagen
(FOTO). El siguiente pará metro es la ruta y el nombre del archivo donde se co-
piará : ‘path’ + “\\” + ‘archivo’ , que se especificará a travé s del Asistente para
la creació n de fó rmulas. Puesto que la ruta la tenemos en una variable local, la
primera parte de la fó rmula será dicha variable local (‘path’). A esta variable hay
que añ adirle la barra de directorios (\), por lo que le concatenaremos los sím-
bolos \\ (en un texto para poder utilizar la barra \ como texto y no como modi-
ficador hemos de escribirla dos veces). Finalmente añ adimos el nombre del fi-
chero, que se encuentra en la variable local ‘archivo’. El ú ltimo pará metro será la
variable local en la que guardamos si se ha exportado o no el dibujo (bOK).

Se evalú a si el fichero ha sido o no exportado, con la funció n if. Si ‘bOK’ =


1 (el fichero ha sido exportado) entonces se presenta el siguiente mensaje:

Mensaje: “El fichero ha sido copiado en “ + ‘path’ + “\\” + ‘archivo’. Se tra-


ta de una fó rmula en la que incluimos una cadena de texto (“El fichero ha
sido copiado en “), a la que concatenamos la variable local que contiene la
ruta del directorio (‘path’), la barra de directorios (“\\”) y la variable local que
contiene el nombre del fichero (‘archivo’).

Si no ha sido exportado (Else), entonces se presentará el mensaje siguien-


te: “Compruebe si la ruta que ha escrito es correcta”.

Refrescar dimensiones dibujo


Refresca los valores de los campos que almacenan las dimensiones de una
imagen. Es una Funció n propia de ficha.

Cuando una tabla tiene un campo de tipo Objeto Dibujo, Velá zquez, a tra-
vé s de la opció n del menú del Editor Campos/Crear campos dimensiones
dibujo, nos da la opció n de crear dos campos para almacenar sus dimen-
siones. El valor de estos campos es actualizado automá ticamente cuando
se da de alta o modifica un dibujo en una ficha.

Si modificamos la estructura de una aplicació n que ya tiene datos y añ adi-


mos los campos para guardar las dimensiones del dibujo, al ejecutar la apli-
cació n todos los registros que ya existían antes de la modificació n del pro-
yecto y que contuviesen dibujos tendrá n ambos campos a 0. Para estos ca-
sos tendremos que ejecutar un proceso con esta funció n para darles el va-
lor que les corresponda.
314 315

De cara a la ejecució n de una aplicació n con el Servidor Web de Velá zquez


Visual, si en una tabla que tiene un campo de tipo Objeto Dibujo se inclu-
yen los campos para guardar las dimensiones del mismo, las imá genes se
presentará n con mayor rapidez.

Hemos de especificar el pará metro Identificador Campo objeto dibujo: iden-


tificador del campo objeto dibujo del que se tomará n las dimensiones para
almacenar en los campos correspondientes.

e Ejemplo

En un proyecto existe una tabla de Artículos que contiene un campo de ti-


po Objeto Dibujo llamado FOTO. Realizamos una modificació n en el pro-
yecto para añ adir los campos de dimensiones del objeto, por lo que tras
ejecutar la opció n correspondiente, en la tabla aparecerá n los campos FO-
TO-CX y FOTO-CY. Con el fin de dar valor a estos campos en los registros
que ya existían antes de modificar el proyecto hemos de ejecutar un proce-
so con origen en una lista de artículos. É ste será :

Recorrer lista lectura / escritura

Refrescar dimensiones dibujo -> FOTO

Ha cambiado el campo?
Esta funció n devuelve, en una variable local al proceso, el resultado de
comprobar si el campo identificado ha sido modificado. Devuelve 1 si ha si-
do modificado y 0 en caso contrario. Es una Funció n propia de ficha.

Podemos utilizarla, por ejemplo, asociada a la pé rdida de foco de un cam-


po de un formulario de modificaciones. Así, si el campo ha cambiado se eje-
cutará un proceso, si no, no se ejecutará . Ojo: esta funció n ha de ser usa-
da antes de grabar en disco, pues compara el valor actual del campo con
el valor almacenado en disco.

Especificaremos los pará metros:

Identificador campo: identificador del campo consultado (obligatorio).

Identificador variable de retorno Sí/No: identificador de la variable local donde


devuelve el valor Sí/No que indica si el campo ha sido modificado (opcional).

e Ejemplo

Hemos creado un proceso que realiza una serie de cá lculos en funció n del
contenido del campo PRECIO de una tabla de ARTICULOS. A este proceso
lo hemos llamado CAMBIO-PRECIO. Para que no se ejecute el proceso siem-
pre que en un formulario de modificaciones de ARTICULOS pierda el foco el
campo PRECIO, crearemos un proceso y lo asociaremos a la pé rdida de fo-
co de dicho campo. El origen del mismo ha de ser una Ficha de ARTICULOS:
08 Desarrollo completo
de una aplicació n

Ha cambiado el campo, PRECIO, bOK e


if ‘bOK’

Ejecutar proceso -> CAMBIO-PRECIO

Este proceso comprueba si ha cambiado el valor del campo PRECIO, en


cuyo caso ejecuta el proceso CAMBIO-PRECIO.

Ha cambiado la ficha?
Esta funció n devuelve, en una variable local al proceso, el resultado de
comprobar si se ha modificado algú n campo de la ficha. Devolverá 1 si ha
cambiado la ficha y 0 en caso contrario. Es una Funció n propia de ficha.

Podemos usarla, por ejemplo, como proceso anterior a una modificació n de


ficha. Así, si se ha modificado algú n campo de la misma, se ejecutará un
proceso, si no, no se ejecutará . Del mismo modo que la funció n Ha cam-
biado el campo?, ha de usarse antes de grabar en disco, ya que tambié n
comprueba el valor actual del campo con el almacenado en disco.

Hemos de especificar el pará metro Identificador variable de retorno Sí/No:


identificador de la variable local donde devuelve si el campo ha sido modi-
ficado o no (opcional).

Ya existe en el índice?
Esta funció n devuelve, en una variable local al proceso, el resultado de
comprobar si en el índice identificado, de clave ú nica, ya existe la clave ac-
tual. La funció n compone la clave adecuada al índice en el que se realiza la
consulta tomá ndolo de la ficha origen de la funció n, por lo que nosotros no
tendremos que hacer nada. Es una Funció n propia de ficha.

Cuando damos de alta un registro a travé s de formulario, Velá zquez com-


prueba en todos los índices de clave ú nica que no haya registros duplica-
dos, pero cuando damos de alta a travé s de tubos o procesos (por ejemplo)
só lo se comprueba que no esté duplicado el índice CODIGO. Entonces es
interesante crear triggers anteriores al alta en los que la funció n Ya existe en
el índice? compruebe que no existan duplicidades en los demá s índices de
clave ú nica de la tabla. En el caso de existir el índice, usaremos la funció n
Set retorno proceso = NO para cancelar el alta.

Los pará metros que hemos de especificar son:

Identificador índice: identificador del índice consultado (obligatorio).

Identificador variable de retorno Sí/No: identificador de la variable local don-


de devuelve el valor Sí/No que indica si la clave ya existe en ese índice de
clave ú nica (opcional).

Ejemplo e
316 317

e El proceso anterior tiene su origen en una ficha y comprueba si el registro


ya está indexado por ese cliente. Se utilizará la variable local de retorno
Sí/No para evaluar el resultado y actuar en consecuencia.

Ya existe en alguno de sus índices de clave única?


Esta funció n comprueba todos los índices de clave ú nica y devuelve, en una
variable local al proceso, el mensaje que nos indica por qué índices de cla-
ve ú nica ya existe el registro actual (si es que ya existe por alguno). La fun-
ció n compone la clave adecuada al índice en el que se realiza cada una de
las consultas; nosotros no tenemos que ocuparnos de ello. Es una Funció n
propia de ficha.

Hemos de especificar los pará metros:

Identificador variable de retorno Sí/No: identificador de la variable local donde


devuelve el valor Sí/No que indica si la clave ya existe en ese índice (opcional).

Identificador variable de retorno mensaje: identificador de la variable donde


se guardará el mensaje.

e Ejemplo

Este proceso, lanzado antes de dar de alta un Proveedor, comprueba si el


registro ya existe por alguno de sus índices de clave ú nica, en la variable lo-
cal ‘bok’ almacenará si ya existe, y en la variable local ‘mensaje’ se guarda-
rá el índice o índices de clave ú nica duplicado. Si se cumple la condició n,
devuelve un mensaje indicando por qué clave ú nica ya existe y cancela el
alta (Set retorno proceso = NO).

Pedir Formulario
Visualiza el formulario indicado, pará ndose el proceso hasta que el usuario
cierre el formulario. Es una Funció n propia de ficha.

El formulario se rellena con el contenido de la ficha en curso, pudiendo el


usuario modificar los datos antes de aceptar. No podemos utilizar esta fun-
ció n para dar altas, sino para realizar modificaciones.

Cuando modificamos una ficha de esta manera, Velá zquez Visual ú nicamen-
te controla la clave primaria CODIGO, el resto de claves ú nicas deben ser
controladas por nosotros en triggers, mediante las funciones Ya existe en el
índice? o Ya existe en alguno de sus índices? Esto es así ya que Pedir for-
mulario se usa sobre todo para obtener datos en variables o campos para
bú squedas que no tengan formulario asignado, u otros casos parecidos.

Hemos de especificar los pará metros siguientes:


08 Desarrollo completo
de una aplicació n

Identificador formulario: identificador del formulario a presentar (obligatorio).

Identificador de la variable local que retorna SI/NO: variable local en la que


se recogerá si el usuario ha pulsado Aceptar o Cancelar (opcional).

Ejemplo e

En la siguiente línea pedimos el formulario de precios de un artículo.

Pedir Formulario -> ARTICULO-PRECIOS

Ventana dibujo tamaño original


Presenta en una ventana el contenido del campo de tipo objeto dibujo se-
leccionado en su tamañ o original, o proporcionado si é ste es mayor que el
tamañ o de la pantalla. Es una Funció n propia de ficha a la que hemos de
pasar los pará metros:

Campo objeto dibujo: identificador del campo tipo objeto dibujo a presen-
tar (obligatorio).

Título ventana (opcional): fó rmula para la composició n del título de la venta-


na que se presente. Si no especificamos ninguna fó rmula el título será 0.

Ejemplo e

En un casillero de una tabla ARTICULOS queremos que, al hacer clic sobre


una casilla, se presente la foto del artículo con su tamañ o original. El pro-
ceso tendrá su origen en una ficha de artículos y será :

Ventana dibujo tamañ o original -> FOTO, %NOMBRE%

En el segundo pará metro se ha seleccionado el campo %NOMBRE% para


que se visualice el nombre del artículo como título de la ventana.

Formulario Alta de Maestro


Esta funció n crea un nuevo registro en la tabla de datos maestra apuntada
por el campo enlazado, utilizando el formulario declarado en el otro pará -
metro, y generando un subproceso de ficha con los datos del registro crea-
do. El proceso queda paralizado hasta que el usuario cierre el formulario. Es
una Funció n propia de ficha.

Necesita los siguientes pará metros:

Identificador campo: identificador del campo enlazado (obligatorio).

Identificador formulario: identificador del formulario a visualizar (obligatorio).

Ejemplo e

En un proceso cuyo origen es una ficha de ARTICULOS queremos dar de


dar de alta la marca (maestro) del artículo.
318 319

El proceso anterior pide el formulario MARCA-ALTA para dar de alta una


nueva Marca de Artículos.

Leer ficha de maestro


Lee la ficha del maestro del campo enlazado y crea un subproceso de ficha
con los datos del registro leído. Esta ficha es de solo lectura, por lo tanto,
ningú n cambio será guardado en la base de datos. El subproceso que ge-
nera esta funció n tendrá su origen en la ficha del maestro editado. Es una
Funció n propia de ficha en la que especificamos el pará metro Identificador
campo: identificador del campo enlazado (obligatorio).

e Ejemplo

Desde una ficha de ARTICULOS permitiremos la lectura de los datos de su


maestro MARCAS.

El proceso anterior lee la ficha de la marca del artículo actual, pero no po-
demos modificarla en el subproceso generado. La línea de subproceso
creada por esta funció n tendrá como origen una ficha de MARCAS.

Modificar ficha de maestro


Lee la ficha del campo enlazado y crea un subproceso de ficha con los datos del
registro leído. Podemos modificar esta ficha en el subproceso, de modo que cual-
quier cambio será guardado en la tabla de datos. Es una Funció n propia de ficha.

Hemos de especificar el pará metro Identificador campo: identificador del


campo enlazado (obligatorio).

e Ejemplo

Leeremos la ficha de la marca del artículo actual y podremos modificar al-


gú n campo de la misma en el subproceso generado.

API de Velá zquez


La A.P.I. de Velá zquez Visual (Aplication Program Interface o Interfaz de Apli-
cació n del Programa: conjunto de rutinas del sistema que se pueden usar en
un programa para la gestió n de entrada/salida, gestió n de ficheros, etc.) nos
permiten trabajar con campos y consta de las siguientes funciones:

Вам также может понравиться