Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Última revisiónAmbos lados, revisión siguiente
wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:6.-delete:start [2018/01/31 13:28] – editor externo 127.0.0.1wiki:2.-desarrollo-app:2.3.-codigo:c.-eventos:6.-delete:start [2018/01/31 13:29] – [Nodo DELETE] patricia
Línea 1: Línea 1:
 +
 +{{indexmenu_n>1}}
  
 +===== Nodo DELETE ======
 +Nodo en el cual se van a describir las reglas y acciones de eliminación de las colecciones.\\
 +\\
 +El formato es el siguiente:\\
 +<code xml>
 +<delete>
 +     <!-- Condición para que se efectue el borrado -->
 +     <rule atributos>...</rule>
 +
 +     <!-- Acciones a efectuar si la condición anterior se cumple -->
 +     <action atributos>...</action>
 +</delete>
 +</code>
 +===== Nodo <rule> =====
 +Nodo donde se definen las reglas de validación del borrado.\\
 +\\
 +  * Estas reglas se evalúan en el mismo orden que aparecen en la definición de la colección.
 +  * **Si alguna de estas reglas falla, el objeto no se podrá eliminar**, y el método <nowiki>DeleteObject</nowiki> retornará un código de error que se puede personalizar en esta misma definición.\\
 +\\
 +
 +
 +==== Atributos Nodo <rule> ====
 +\\
 +^  ATRIBUTOS NODO RULE  ^
 +|**value="eof, neof o false"**| En el primer caso, la regla triunfará si la sentencia SQL asociada a la misma no retorna ningún registro. En caso de que el SQL retorne algún registro, la regla fallará. En el segundo caso se invierte el comportamiento de la regla. En el tercer caso la regla siempre falla. Este tipo de reglas se define para objetos que no pueden eliminarse nunca, pueden consultarse, pero no eliminarse.|  
 +|**sql** |Este atributo aporta la sentencia SQL que será ejecutada para evaluar la regla. El comportamiento (triunfo o fracaso) de la regla, lo define el atributo “value”, descrito anteriormente.|  
 +|**errormsg**| Este atributo define el mensaje que retornará el método <nowiki>DeleteObject</nowiki> cuando se ejecute y falle esta regla. Este mensaje puede ser mostrado por la aplicación para informarle al usuario por qué no se puede eliminar este objeto.|   
 +
 +\\
 +==== Ejemplo de Código ====
 +\\
 +
 +
 +<code xml>
 +
 +<delete>
 +     <rule value="eof" sql="SELECT ID FROM ##PREF##DetDocumento WHERE IDARTICULO=##ID##" errormsg="Se han efectuado movimientos con este articulo."></rule>
 +     <!-- Comprueba que no exista ningún movimiento de este artículo, en caso de existir mostraría un mensaje de error y no nos permitiría continuar con el borrado -->
 +</delete>
 +
 +</code>
 +
 +\\
 +Si todas las reglas han sido favorables, el objeto puede eliminarse, por lo que se pasa a ejecutar las acciones de eliminación (aquellos elementos dentro de la definición <delete> que son de tipo “action”.\\
 +\\
 +
 +
 +==== Atributos Nodo <action> ====
 +\\ 
 +^  ATRIBUTOS NODO ACTION  ^ ^
 +|**name="valor"**| Nombre de la acción a realizar.|
 +|**executesql** |Ejecuta la sentencia SQL que define en el atributo “sql” que sigue en la declaración de la acción. La capa de datos se encarga de sustituir las macros siguientes: \\ -**##PREF##** Prefijo de la aplicación. Se define a nivel de aplicación de datos. \\ - **##ID##** ID del objeto que se está procesando.\\ -**##FLD_nombrecampo##** valor del campo cuyo nombre es “nombrecampo”, por ejemplo, si en el SQL se coloca la macro **##FLD_IDARTICULO##**, la capa de datos se encarga de buscar el valor del campo IDARTICULO y colocar su valor en el SQL, incluyendo posibles separadores (e.j. en el caso de cadenas, la capa de datos generará el valor entre comillas necesario para que la sintaxis SQL sea correcta).|
 +|**sql** |Este atributo contiene una sentencia SQL, cuyas macros se evaluarán por parte de la capa de datos.|  
 +\\
 +
 +
 +
 +
 +==== Ejemplo de Código ====
 +\\
 +
 +<code xml>
 +<delete>
 +     <!-- Ejecuta un delete de la tabla stock en la que el IDARTICULO sea el ID del artículo que se está eliminando -->
 +     <action name="executesql" sql="DELETE FROM ##PREF##Stock WHERE IDARTICULO=##ID##"></action>
 +</delete>
 +</coll>
 +</code>