Funciones
Funciones Valores de entorno En las funciones pueden utilizarse los siguientes valores de entorno:
- &$idi : Idioma de la sesión.
- &$ipn: Ip de la sesión.
- &$usu: Código de usuario conectado.
- &$fecha: Fecha actual.
- &$fecha1m: Fecha de primero de mes.
- &$fecha1a: Fecha de primero de año.
Referencias a controles En los campos de sentencia SQL y parámetros de la función, podemos hacer referencia al contenido de los campos de la pantalla indicando el número de contorl (3 dígitos) precedido por #. De esta manera se substituirá el contenido del campo indicado por el conjunto #XXX.
Ejemplos:
select * from abtdt where doid=#006; msg0003 ,#078, ref001, 101
Contenido
- 1 g_aceptar
- 2 g_borrar
- 3 g_borrdoc
- 4 g_buscar
- 5 g_cal
- 6 g_consulta
- 7 g_crgimp
- 8 g_csv
- 9 g_dia_c
- 10 g_dupdoc
- 11 g_ejecuta
- 12 g_email
- 13 g_envdat
- 14 g_envdoc
- 15 g_envfit
- 16 g_exeapl
- 17 g_fijar
- 18 g_foco
- 19 g_grid
- 20 g_imprimir
- 21 g_list
- 22 g_llamar
- 23 g_mens
- 24 g_modificar
- 25 g_nuevo
- 26 g_rebdoc
- 27 l_refresca
- 28 g_rellena
- 29 g_salir
- 30 g_seleccionar
- 31 g_setatr
- 32 g_sustit
- 33 g_transfit
g_aceptar
- Sale de la pantalla devolviendo un 0 en el estatus.
- Si se han utilizado enlaces, devuelve los campos enlazados actualizados a la pantalla anterior.
g_borrar
- Pide confirmación del borrado de la fila
- Ejecuta la sentencia DELETE especificada en el campo sql.
- Después se ejecuta un g_consulta (poner a modo consulta) de cabecera y detalle que coge los parámetros indicados al g_borrar
- Parámetros:
- Parámetro 1:
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a excepción de los indicados a continuación, separados por espacios, por ejemplo: 3 51 52 63
- Parámetro 2: Opcional, registrar operación
- 's': la operación se registrará (usuario, ip, hora...) en el log.
- 'n': la operación no se registrará en el log, opción por defecto.
- Parámetro 1:
- Ejemplo:
3 51 52 63,s
- En este ejemplo, se inicializarán los controles 51, 52 y 63 y se anotará la operación en el registro de la aplicación.
- Pares de campos: Si la operación se registra en el log (según el valor del parámetro 2), texto que aparecerá en el registro de la aplicación.
- Ejemplo:
baja en tabla zona, código:#051, descripción:#052
- Si el usuario aprieta el botón Aceptar el control 1 guardará el valor 0, si aprieta el botón Cancelar, dicho valor será mayor que 0.
g_borrdoc
Borra del ordenador local el archivo indicado mediante tres parámetros:
- 1,2: Los dos primeros son los controles que identifican este archivo como único. Si el segundo no es necesario dejaremos el parámetro en blanco pero sin obviar las comas.
- 3: El control que guardar la extensión del archivo a eliminar.
g_buscar
- Ejecuta el select especificado en el SQL.
- Rellena los campos de la pantalla en función de los pares de campos.
- Lanza un g_consulta pasándole los parámetros especificados.
- Si no recibe ningún parámetro se comporta como si hubiera recibido un 0.
- Parámetros:
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a excepción de los indicados, por ejemplo: 3,51,52,63
g_cal
Rellena una estructura de calendario con los días y semanas.
g_consulta
- Pone la pantalla en modo consulta
- Inicializa los controles de acuerdo con los parámetros que recibe
- Parámetros:
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a excepción de los indicados a continuación, separados por espacios, por ejemplo: 3 51 52 63
g_crgimp
- Función que envía el resultado de un select al generador de informes para hacer un report.
- Parámetros: 3 parámetros
- 1: Cabecera o detalle ("c" o "d"): indicamos si el resultado del select corresponde a la cabecera del impreso o corresponde a un detalle.
- 2: Write o Append ("w" o "a"): indicamos si creamos un nuevo impreso o añadimos a uno existente.
- 3: El tercer parámetro nos indica si ha habido errores en la base de datos, debe contener 0 o 1
- 0: Da error si no hay filas o si hay un error devolviendo un 1 o un 2 respectivamente en el control de status, control 1.
- 1: Sólo avisa si hay un error de base de datos y devuelve un 2 en el control de status, control 1.
- En sentencia SQL pondremos la sentencia que devuelva los datos que enviamos al impreso.
select cac_ejer, cac_num, cac_fecha from abclcb where cac_num=#061 and cac_ejer=#060 and cac_alm=#059
- En pares de campos pondremos el tipo de dato y tamaño de cada uno de los campos que mostramos con el select en el mismo orden. Para el ejemplo anterior sería:
N02,N06,X10
g_csv
Transmite al programa cliente la selección de datos actual en formato csv y el programa cliente abre automáticamente el fichero con la aplicación asociada a este tipo de datos, habitualmente Excel u Open Office.
- Parámetros función: Esta función no tiene parámetros
g_dia_c
Pone el día seleccionado en la cabecera del calendario y el lunes correspondiente en la semana.
g_dupdoc
- Se usa para ordenar al cliente que copie un documento como otro. El documento origen debe estar ya en la máquina cliente.
- Parámetros de la función:
- 1: Referencia documento origen
- 2: Versión documento origen
- 3: Tipo de documento
- 4: Referencia documento destino
- 5: Versión documento destino
g_ejecuta
- Ejecuta la sentencia sql especificada.
- Número de parámetros: 3
- Parámetro 1:
- 0: Da error si no hay filas o si hay un error devolviendo un 1 en el primer caso o un 2 en el segundo en el control de status, control 1.
Podemos capturar el valor dentro del código de programación mediante un campo numérico, por ejemplo:
- 0: Da error si no hay filas o si hay un error devolviendo un 1 en el primer caso o un 2 en el segundo en el control de status, control 1.
- Parámetro 1:
stat numeric(2,0)@1;
- 1: Sólo avisa si hay un error de base de datos y devuelve un 2 en el control de status, control 1.
- 2: No avisa nunca y devuelve un 0 en el control de status, control 1, como si no hubiese habido ningún error.
- 3: No avisa nunca pero devuelve un 1 o un 2 en el control de status, control 1, dependiendo de si el error es que no hay filas o si es un error de base de datos.
- Parámetro 2:
- 's': La sentencia sql se depurará antes de ejecutarse. Por ejemplo en sentencias selects se eliminan las condiciones de la clausula where de los campos que no tienen ningún valor
- 'n': La sentencia sql se ejecutará sin ningún cambio.
- Parámetro 3:
- Número de control donde se almacenaran el número de filas afectadas por el select de la función, si no se desea guardarlas en ningún control introducir el valor 0. Su aplicación tiene utilidad en la programación interna.
- Parámetro 4:
- 's': la operación se registrará (usuario, ip, hora...) en el log.
- 'n': la operación no se registrará en el log, opción por defecto.
- Sentencia SQL: Sentencia SQL a ejecutar.
- Ejemplo:
insert into zona (zo_codi,zo_desc) values ('#051','#052')
- Pares de campos: Si la operación se registra en el log (según el valor del parámetro 4), texto que aparecerá en el registro de la aplicación.
- Ejemplo:
alta en tabla zona, código:#051, descripción:#052
g_email
- Función que abre el gestor de correo con el mail, asunto y texto que se le indique desde la pantalla.
- Parámetro:
- Código de control dónde se guarda la información que necesita el gestor de correo. Previamente a llamar a g_email se deberá hacer un g_rellena de este control con una cadena con el mail, asunto y cuerpo del mensaje separado por pipes "|". Si no disponemos de asunto y cuerpo no hace falta ponerlos en blanco, si no que pasaremos solo el mail sin pipes.
g_envdat
Envía los datos de un select del servidor a un archivo en el cliente.
- Parámetros función:
- 1: (r,R,w,W) Una letra que indica el comportamiento, r sólo lectura, w lectura y escritura, R y W indican lo mismo, pero después se lanza la aplicación para abrir el fichero.
- 2: (s/n) Indica si debe preguntar al usuario donde guardar el fichero.
- 3: (nombre archivo) es el nombre con que se guardará el archivo. Se puede sustituir por un control, donde tenga el nombre del archivo guardado.
- Ejemplo:
R,n,graphic.svg w,s,#056
- Sentencia SQL:
select ....
g_envdoc
Envía un documento desde el ordenador cliente al servidor. En el servidor mira cual es la versión actual y le cambia el nombre aumentando en uno el número de versión.
- Parámetros función:
- 1,2: Los dos primeros son los controles que identifican este archivo como único. Si el segundo no es necesario dejaremos el parámetro en blanco pero sin obviar las comas.
- 3: El control que guarda la extensión del archivo, para poder completar el nombre.
g_envfit
Transmite al programa cliente la selección de datos actual. El cliente transforma el fichero al formato especificado en Parámetros Función y abre el fichero para su consulta o edición.
- Parámetros función:
- a: Formato RTF
- b: Formato texto plano
g_exeapl
- Ejecuta el archivo indicado mediante tres parámetros:
- 1,2: Los dos primeros son los controles que identifican este archivo como único. Si el segundo no es necesario dejaremos el parámetro en blanco pero sin obviar las comas.
- 3: El control que guarda la extensión del archivo a ejecutar, para así sepa que aplicación ha de utilizar para realizar la acción.
g_fijar
- Pone el oid del registro seleccionado en la grid
- Parámetro 1: Indica el control que ha sido seleccionado, independientemenete de si lo ha clickado el usuario o no.
g_foco
Coloca el foco en el control indicado en el parámetro.
- Parámetro: El número de control que deseamos reciba el foco.
g_grid
Muestra los datos del select especificado en la grid de la pantalla actual.
- Sentencia SQL:
- Sentencia select de los datos a mostrar.
- Parámetros:
- Identificar el registro por su oid: si: 's' o no: 'n'.nota
- Pares de campos:
- Especificación del formato de cada una de las columnas del select especificado, ver g_list para ver las opciones disponibles.
nota La primera columna del select se utiliza como identificador de la fila, debe contener un valor que identifique de forma univoca la fila, este valor se sitúa en el campo 006 de la pantalla cada vez que el usuario clica en una linea de la grid. Con este valor podemos identificar el valor que ha seleccionado el usuario y actuar en consecuencia.
Si especificamos una 's' o bien no se especifica este parámetro, la función inserta de forma automática en el resultado de la select, una primera columna con el oid de la 1ª tabla especificada en la sentencia select. Si queremos utilizar una columna distinta para identificar la fila que seleccione el usuario especificamos una 'n', en este caso la 1ª columna del select especificado actuará como identificador de la fila y no aparecerá en la grid.
g_imprimir
Manda el impreso en cuestión a imprimir en el formato y en la impresora especificados mediante los parámetros:
- 1: Formato. Indica el formato del impreso ha imprimir.
- 2: Impresora. Indica en que impresora se ha de imprimir el impreso
- 3: Previsualizar. Indica si se ha de previsualizar el impreso.
- 4: Opcional: S: Probar impreso (El programa cliente genera el impreso con un documento xml en uso). También puede especificarse uncampo de donde obtener el valor con la notación #nnn.
g_list
Se usa para llamar a una pantalla rellenando la grid con el resultado de la sentencia select introducida y de acuerdo con los parámetros utilizados.
La setencia select, antes de ser ejecutada, se depurará eliminando las condiciones no especificadas, ver notación empleada para ello en la función g_ejecuta por ejemplo.
Para cada columna del select deberemos indicar el formato: 'N' para campos numéricos, 'E' para campos numéricos con separación con punto en los millares (en este caso debemos tener en cuenta los puntos a la hora de calcular la extensión del campo en el listado), 'X' para campos alfanuméricos y 'V' para campos de longitud variable; y seguidamente la longitud a reservar para cada columna indicada con 2 o 3 dígitos, separando los campos con comas. Podemos jugar con la longitud para truncar los datos de una columna o ampliar el espacio de una columna para poder mostrar un título mas extenso.
En los campos que sean numéricos ('E' y 'N') tenemos la opción de ocultar los valores que sean 0. Lo indicaremos mediante minúscula, o sea con la letra del parámetro en minúscula:
e14,n10...
Como todos los campos tienen que ir seguido de dos dígitos, para el formato 'V', que no tiene función alguna, por convenio y para evitar confusiones pondremos siempre 99.
- Ejemplo:
Parámetros función.
- Nombre de la pantalla a mostrar con el resultado de la sentencia select especificada .
- Numero del control que se ejecutara nada mas cargar la pantalla.
- Posición relativa a la pantalla que realiza la llamada. Si la lista se visualiza en una ventana, ésta se creara desplazada según el valor que indiquemos en este parámetro. Se indica en formato X-Y donde X e Y representan el desplazamiento en sus respectivas coordenadas. También se puede poner un campo alfanumérico con ese mismo valor para poder trabajar con el desde la programación. Si se omite el parámetro, la pantalla se mostrará sin desplazamiento. Un ejemplo de este caso es cuando se quiere mostrar una pantalla completa.
- Incluir 1º columna con oid de la tabla principal del select nota:
- 's': Identificará el registro por el oid de la tabla principal.
- 'n': Identificará el registro por el primer campo del select y este no aparecerá en la grid.
nota La primera columna del select se utiliza como identificador de la fila, debe contener un valor que identifique de forma univoca la fila, este valor se sitúa en el campo 006 de la pantalla cada vez que el usuario clica en una linea de la grid. Con este valor podemos identificar el valor que ha seleccionado el usuario y actuar en consecuencia.
Si especificamos una 's' o bien no se especifica este parámetro, la función inserta de forma automática en el resultado de la select, una primera columna con el oid de la 1ª tabla especificada en la sentencia select. Si queremos utilizar una columna distinta para identificar la fila que seleccione el usuario especificamos una 'n' en el 3er parámetro, en este caso la 1ª columna del select especificado actuará como identificador de la fila.
Ejemplo:
Parámetros función: dgsel 01,033,100-100,n Enlaces: 006=006,033=033 Sentencia SQL: select trn_nom,trn_codi from transporte where trn_nom ilike '#052%' order by trn_nom Descripción del listado: X20N08
g_llamar
Enlaza con la pantalla especificada y opcionalmente ejecuta un control.
- Parámetros:
- Nombre de la pantalla a enlazar, sin comillas.
- Núm. de control a ejecutar. Si no se quiere ejecutar ningún control al inicio, omitimos este segundo parámetro dejándolo en blanco y continuando con los siguientes parámetros.
- Posición relativa a la pantalla que realiza la llamada. Si la pantalla que llamamos es una ventana, ésta se creara desplazada según el valor que indiquemos en este parámetro. Se indica en formato X-Y donde X e Y representan el desplazamiento en sus respectivas coordenadas. También se puede poner un campo alfanumérico con ese mismo valor para poder trabajar con el desde la programación.
Atención: El valor de la posición relativa se informa a través del campo 12, eso quiere decir que hay que vigilar de no inicializarlo o cambiar su valor en la pantalla llamada.
- Enlaces:
En los enlaces indicaremos los campos que van a intercambiar datos con la pantalla llamada, sin comillas, con 3 dígitos y separados por comas, mediante los signos siguientes:- < : indica solo retorno.
- = : indica envío y retorno.
- > : indica solo envío.
- Ejemplo:
052<027,056=015, 057>067
El el campo 52 de la pantalla origen recibirá el valor del campo 27 de la pantalla destino, pero el 27 no recibirá nada; el campo 56 de origen y el 15 de destino se intercambiaran el contenido, tanto al ir, como al volver; el campo 57 enviará la información al 67 al ir, pero al volver no recogerá ningún dato.. Si queremos que al salir de la página llamada se pasen también los datos la pantalla deberá salir con un g_aceptar, si por el contrario sale con un g_salir no se pasará ningún dato.
- Ejemplo:
g_llamar, Parámetros: dgg0102.1,026,300-400
g_mens
- Permite mostrar un mensaje por pantalla para el usuario.
- Esta función se llama con 4 parámetros, que son:
- 1: La pantalla que se quiere utilizar para mostrar el error, hasta 10 dígitos alfanuméricos.
Por ejemplo: msg0001, msg0002, msg0003... msg0008. - 2: El código del error que quiere mostrarse, definido previamente en la tabla dgmens. Podemos definir nuevos mensajes accediendo a Gestión de mensajes de programación. También podemos especificar un identificador de control con la notación #nnn, desde donde se tomará el código de error.
- 3: Una referencia identificadora del error, 6 dígitos alfanuméricos (Opcional).
- 4: Un campo de la pantalla cuyo contenido quiera mostrarse como información adicional en el mensaje, 3 dígitos numéricos (Opcional).
- 1: La pantalla que se quiere utilizar para mostrar el error, hasta 10 dígitos alfanuméricos.
- La pantalla que aparece con el mensaje siempre contendrá uno o dos botones (un “Aceptar” y un “Cancelar”). Si se clicka el primero la función devolverá un 0 en el campo 1 (estado), mientras que si se clicka el segundo devolverá un 1.
- Aunque no especifiquemos los carácteres opcionales, debemos mantener las comas separadoras de los mismos.
Ejemplos.
msg0001,msg_err,001,053 msg0001,msg_err,,053 msg0001,#066,,067
Las pantallas con las que se muestran los errores se pueden crear o cogerlas ya predeterminadas:
g_modificar
- Pone el estado 'Modificar' estableciendo los atributos de los campos para ese estado.
- Sentencia sql y pares de campos, existen dos opciones:
- Introducir una sentencia select específica (normalmente para bloquear el registro), indicando también los pares de campos que debe rellenar
- Dejar la sentencia select en blanco, en ese caso por programación hay que ejecutar previamente el control 36 (exeb(36)) para refrescar los datos que se vayan a modificar.
- Parámetros:
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto.
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a excepción de los indicados, separados por espacios, por ejemplo: 3 51 52 63
g_nuevo
- Pone en estado de altas
- Establece los atributos correspondientes al estado de altas.
- Inicializa los campos de acuerdo con sus valores por defecto en función de los parámetros recibidos.
- Si no recibe ningún parámetro se comporta como si hubiera recibido un 1.
- Parámetros:
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto.
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a su valor por defecto, a excepción de los indicados, separados por espacios, por ejemplo: 3 51 52 63
g_rebdoc
Esta función envía una copia del documento referenciado en pantalla desde el servidor al ordenador local. Para ello se le pasan cuatro parámetros: el modo de apertura del archivo, los controles que identifican este archivo y la extensión del archivo.
- 1: Tiene cuatro posibles valores: ' r ',' w ',' R ',' W '. En los dos primeros casos se indica como vamos a copiar el archivo (solo lectura o escritura, respectivamente). Los dos casos siguientes indican lo mismo, pero además abriendo el archivo con la aplicación correspondiente.
- 2, 3: Los controles que identifican este archivo como único (referencia, versión). Si el segundo no es necesario dejaremos el parámetro en blanco pero sin obviar las comas.
- 4: La extensión del archivo a copiar, que utilizará el programa para saber con que aplicación se ha de abrir este archivo.
l_refresca
- Se ejecuta siempre detrás de cualquier modificación en la base de datos (alta, baja, modificación de un registro) para que este cambio salga reflejado en la grid.
- Contiene dos parámetros: el control que queremos que se ejecute, y el número de orden.
- Parámetros: 2 parámetros y son obligatorios.
- 1: El control que queremos que se ejecute, habitualmente el control 10 que es el que hace la búsqueda y rellena la grid.
- 2: El número de orden que corresponde a la función que queremos que se ejecute en el control referido.
g_rellena
Rellena los controles de la pantalla a partir del resultado de una select. No inicializa los campos previamente. Si así se quiere hay que llamar la función g_nuevo con los parámetros pertinentes.
- Función: g_rellena
- Fichero funciones: nada (general)
- Tipo: B
- Parámetros función: 3 parámetros
- Primer parámetro:
- 0: Da error si no hay filas o si hay un error devolviendo un 1 o un 2 respectivamente en el control de status, control 1.
- 1: Sólo avisa si hay un error de base de datos y devuelve un 2 en el control de status, control 1.
- Segundo parámetro:
- Número de control donde se almacenaran el número de filas afectadas por el select de la función, si no se desea guardarlas en ningún control introducir el valor 0. Su aplicación tiene utilidad en la programación interna
- Tercer parámetro:
- 's': La sentencia sql se depurará antes de ejecutarse. Por ejemplo en sentencias selects se eliminan las condiciones de la clausula where de los campos que no tienen ningún valor
- 'n': La sentencia sql se ejecutará sin ningún cambio.
- Primer parámetro:
- Ejemplo:
1,99
- En este ejemplo se avisa si hay un error de base de datos y almacena el número de filas afectadas por la sentencia select de la función en el control 99.
- Sentencia SQL: Sentencia a ejecutar, por ejemplo:
select fmh_codi,fmh_desc from h_famhor where oid=#006
- Pares de campos: Controles a rellenar con los datos de la select, por ejemplo:
001063,002064
Nota: Esta función no puede utilizarse para rellenar el contenido del campo donde está definida.
g_salir
- Sale de la pantalla devolviendo un 1 en el estatus.
- Anula el comportamiento del campo enlazar. Si un control contiene una función g_salir, si se ejecuta, no se efectuará el enlace que se halla especificado en el campo "enlazar ctrl"
g_seleccionar
- Pone en estado de seleccionar
- Establece los atributos correspondientes al estado de seleccionar.
- Inicializa los campos de acuerdo con sus valores por defecto en función de los parámetros recibidos. Si no recibe ningún parámetro se comporta como si hubiera recibido un 0.
- Parámetros: 1
- 0: No modifica ningún control.
- 1: Inicializa todos los controles a su valor por defecto.
- 2: Inicializa los controles mayores que 50 a su valor por defecto.
- 3: Inicializa todos los controles a su valor por defecto a excepción de los indicados, por ejemplo: 3 51 52 63
g_setatr
- Se usa para cambiar un atributo en tiempo de ejecución a uno o varios controles. La función se asigna a cualquier control de la pantalla.
- Parámetros:
- 1:
- 0: Indica que el atríbuto es dinámico es decir, cuando cambie el estado de la pantalla (altas, consultas, etc...), el atributo se modificará con su valor correspondiente o mantendrá el que le indiquemos en la función.
- 1: Indica que el atríbuto es estático es decir no cambiará en función del estado de la pantalla como en el caso anterior.
- Siguientes: A continuación se introducen tantos parámetros adicionales como controles queramos modificar. Para cada control escribimos el número de control de 3 dígitos, el signo igual y el atributo de 2 dígitos, los parámetros se separan por comas. Si tenemos muchos campos que tendrán el mismo atributo podemos agruparlos mediante guiones.
- 1:
- Ejemplo:
1,051=10,052-056=20,053-062=00
En este ejemplo el campo 51 estará deshabilitado, los campos 52 y 56 estarán ocultos y los campos 53 y 62 estarán habilitados, y en los tres casos estos atributos se mantendrán en todos los estados.
g_sustit
Se usa principalmente en la búsqueda avanzada. Su función es sustituir el valor del control que se le pasa en “Páram. Func.” por los valores de los controles contenidos en “Sentencia SQL”, separados por comas. De esta forma si después has de pasar todos estos valores, los tendrás todos contenidos dentro de un único control.
g_transfit
Se usa principalmente en la búsqueda avanzada. Su función es sustituir el valor del control que se le pasa en “Páram. Func.” por los valores de los controles contenidos en “Sentencia SQL”, separados por comas. De esta forma si después has de pasar todos estos valores, los tendrás todos contenidos dentro de un único control.