Nodo en el cual se van a describir las reglas y acciones de eliminación de las colecciones.

El formato es el siguiente:

<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>
<delete refresh="true" show-wait-dialog="false" refresh-selected-row="true" >
        <action name="runscript">
          <script language="VBScript">
 
		            this.ownercollection.ownerobject("MAP_BULTOS")=this.ownercollection.ownerobject.Contents("ContentPrecintos").count-1
 
		            if appData.globalmacro("##DEVICE_OS##")="android" then
			            ui.getview(this.ownercollection.ownerobject).refresh "MAP_BULTOS"
			        end if
 
            </script>
        </action>
    </delete>

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 DeleteObject retornará un código de error que se puede personalizar en esta misma definición.



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 DeleteObject 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.



<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>


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
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.



<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>