Necesito implementar un procedimiento de validación "Antes de Guardar" CONTRATACION, y que no permita se guarde dicha solicitud si no cumple con las validaciones correspondientes. ¿Que estructura debe tener dicho procedimiento y que consideraciones hay que tener? Elabore un procedimiento que recibe "@codigo", pero al momento de buscar la información a través de dicho código en contrataciones aun no existe dicho registro. Que puedo hacer para consultar la información que se ha ingresado en las pantallas de contratación, antes de guardar.

asked 27 Feb '17, 10:11

Luis%20Armas's gravatar image

Luis Armas
(suspended)
accept rate: 8%


El procedimiento antes de guardar se llama luego de salvar el registro en la base de datos, pero antes de dar "Commit" sobre la transacción que incluye el guardado propiamente de la entidad y la ejecución de este procedimiento. Por lo tanto el registro ya existe en la base cuando se llama el procedimiento.

¿Cuándo ejecuta el procedimiento?

La pantalla desde la cual se ejecutó la acción debe ser aquella que está configurada en la entidad o en alguna de las entidades de la que depende. La pantalla se identifica por el campo Controller (ubicado en la información avanzada).

Las dependencias de las entidades se pueden ver en el treeview de “¿Auditoría Activa?” de la configuración de Entidades

¿Cuál procedimiento se ejecuta?

El procedimiento almacenado que se ejecuta siempre será el más específico, esto quiere decir que, aunque la pantalla de donde proviene la acción sea la de una entidad superior en la jerarquía (Ej. Expediente) y ésta tenga configurado un procedimiento a ejecutarse, si la entidad hija es la que está siendo modificada (Ej. Dirección), será éste el que se ejecutara.

Por lo tanto hay que tener en cuenta:

Cuando la entidad no tenga configurado un procedimiento almacenado, verificara si alguno de las entidades de las cuales depende sí lo tiene; y en caso de encontrarlo lo ejecutará.

La verificación siempre se realizara de abajo hacia arriba en la jerarquía de entidades, lo que quiere decir que si se modifica una entidad padre (Ej. Expediente) ésta NO verificara las entidades hijas (Ej. Dirección), en busca de procedimiento o del controlador configurado.

Sobre la estructura del procedimiento almacenado

Éste deberá poseer la siguiente estructura de parámetros:

@codigo                  Código de la entidad que se está Agregando, Modificando o Eliminando

@entitysetname           Este parámetro recibirá el nombre de la entidad que se está guardando

@accion                  La acción que se está realizando al momento de ejecutar el
                         procedimiento almacenado, este pueden ser “Insert”, “Update” o “Delete”

out @mensaje_validacion  Mensaje que se mostrar cuando una validación no se cumpla, 
                         si el mensaje es diferente de nulo no se guardaran los cambios

Entonces, si se quiere retornar un mensaje de error, simplemente se devuelve un mensaje en el parámetro de salida. Con esto se impide que la transacción de "Commit" y ya no se agrega la entidad a la base de datos.

link

answered 28 Feb '17, 15:55

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×34

Asked: 27 Feb '17, 10:11

Seen: 1,190 times

Last updated: 28 Feb '17, 15:55

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática