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.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Gestión de desencadenadores
  • ¿Qué es un desencadenante?
  • Definition
  • Tipos de disparadores disponibles
  • Manejar los disparos a través de la programación
  • Las funciones de WLanguage
  • Creación de un desencadenante
  • Creando una Procedure dirigida por un disparador
  • Pruebas automatizadas y activadores
  • Disparadores y alias de archivos de datos
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Desencadenantes de la aplicación
¿Qué es un desencadenante?

Definition

Un disparador es un procedimiento WLanguage llamado automáticamente por el motor HFSQL cada vez que se realiza una modificación (adición, eliminación, modificación, ...) en un Record de un archivo de datos.
Un trigger sirve para asociar un lenguaje WL Process a una o varias funciones HFSQL (HAdd, HModify, HDelete, ...) sin tener que preocuparse de la ubicación de estas funciones en el código fuente. Los disparadores associated con las funciones HFSQL utilizadas se ejecutan incluso si se trata de una ventana o un código creado por un asistente.
Observación: Los disparadores también operan con las funciones de gestión de controles Tabla basadas en un archivo de datos: TableAdd, TableAddLine, TableModify, TableModifyLine, TableDelete, ...
El uso de un gatillo le permite hacerlo:
  • Reducir el tamaño del código. Por ejemplo, el uso de un trigger permite agrupar los procesos associated con una o más funciones HFSQL (comprobación de duplicados, consistencia de datos, ...).
  • Facilitar la lectura del código.
  • Simplificar las evoluciones futuras de la aplicación.
Los disparadores se pueden aplicar a todo tipo de archivos de datos:
  • HFSQL
  • Accesos nativos (Oracle, AS/400, ....)
  • ODBC
  • OLE DB
Observaciones:
  • Con una base de datos HFSQL Client/Server, también tiene la posibilidad de definir disparadores del servidor. Para obtener más información, consulte Disparadores de servidor.
  • Cuando se modifican los archivos de datos a través de una consulta, se disparan los triggers del servidor, los triggers simples o los triggers del cliente.
Tipos de disparadores disponibles
Hay dos tipos de desencadenantes disponibles:
  • Los activadores "ANTES":
    Un desencadenante "ANTES" se llama:
    • antes de ejecutar una función HFSQL ( HAdd , HModify , HDelete , ...).
    • antes de ejecutar una función para administrar el controles Tabla basado en un archivo de datos.
      Un activador "ANTES" puede utilizarse, por ejemplo, para comprobar la coherencia de los datos de las partidas de una Record. Con este tipo de disparador, se puede inicializar un Variable HFSQL para cancelar la ejecución de la función HFSQL de associated.
  • Los activadores "DESPUÉS":
    Un desencadenante "DESPUÉS" se llama:
    • después de ejecutar una función HFSQL (excepto si el programa se interrumpió durante la ejecución de esta función).
    • después de ejecutar una función para administrar controles Tabla basada en un archivo de datos.
      Se puede utilizar un desencadenante "DESPUÉS" para gestionar la Process de errores, por ejemplo.
Manejar los disparos a través de la programación

Las funciones de WLanguage

Se utilizan varias funciones WLanguage para manipular los disparadores:
HActivateTriggerVuelve a activar un disparador que fue desactivado por HDeactivateTrigger.
HDeactivateTriggerDeshabilita un disparador.
HDeleteTriggerElimina un trigger.
HDescribeTriggerAñade o modifica un activador en un archivo de datos HFSQL.
HListTriggerDevuelve la lista de disparadores aplicados a uno o más archivos de datos HFSQL.
HSetTriggerHabilita o no el manejo de disparadores.
HTriggerRecordBeforeRecupera el valor de la Record actual antes de que se ejecuten los disparadores.

Creación de un desencadenante

Para crear un trigger "ANTES" o un trigger "DESPUÉS", utilice HDescribeTrigger en la inicialización Process del proyecto. Se puede crear el desencadenante:
El asociado WLanguage Procedure se ejecuta cada vez que se ejecuta un disparador.
Observación: Un desencadenante es global para el proyecto.

Creando una Procedure dirigida por un disparador

Un disparador Procedure no acepta ningún parámetro. Sin embargo, algunas variables de estado HFSQL se colocan antes de cada llamada:
H.Nombre de archivoCadena de caracteres: Nombre lógico del fichero cuyo trigger está habilitado.
H.AcciónCarácter inicializado a "A" para un disparo Antes y a "P" para un disparo Después.
Función de activación H.Cadena de caracteres: Nombre de la función HFSQL que activó el trigger.
H.ToDoDurante la ejecución de un trigger anterior:
  • cancelar la ejecución de la función HFSQL asignando "A" al estado HFSQL Variable: H.ToDo = "A".
    En este caso, la acción no se realiza y la función (HAdd, HModify, etc.) devuelve True (sin error).
  • cancelar la ejecución de la función HFSQL actual asignando "E" al estado HFSQL Variable: H.ToDo = "E".
    En este caso, la acción no se realiza y la función (HAdd, HModify, etc.) devuelve False. El mensaje de error es el siguiente: "La acción en el archivo XXX fue interrumpida por el disparador".

Observación: Cuando un trigger "ANTES" y un trigger "DESPUÉS" son associated con una función HFSQL, si "ANTES" cancela la ejecución de la función HFSQL (poniendo H.ToDo en "A"), "DESPUÉS" no se ejecuta.
En el código de Procedure, la palabra clave MiArchivo obtiene y maneja el nombre del archivo sobre el que se disparó el trigger. Para un trigger "AFTER", si el comando HFSQL no se ejecutó correctamente, el Procedure associated con el trigger no se ejecuta.

Pruebas automatizadas y activadores

Si las pruebas automatizadas activan desencadenantes que utilizan cuadros de diálogo (YesNo, Confirme, ...), estos cuadros de diálogo deben desactivarse cuando la prueba sea ejecutada por InAutomaticTestMode.

Disparadores y alias de archivos de datos

Los activadores pueden definirse en los alias de los archivos de datos.
Versión mínima requerida
  • Versión 12
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/06/2023

Señalar un error o enviar una sugerencia | Ayuda local