Este apartado contiene:
•Guardar en base al progreso de la solución
•Filtrar las columnas a guardar
•Acerca de ConjuntoFilaOriginal
El menú contextual de un nodo raíz $DB presenta el comando Guardar datos (imagen siguiente) que activa la fuente de datos representados por el nodo raíz para que se actualicen en diferentes puntos durante el progreso de la solución. Las opciones se describen más adelante. Si se selecciona la opción por defecto No automáticamente, entonces se guardan los datos solo cuando se desencadena la acción Guardar de un evento.
El comando Guardar datos abre un submenú con opciones que se excluyen mutuamente (es decir, solamente se puede seleccionar una opción):
•Cada vez que se abandona la página: los datos de la estructura se guardan cada vez que se sale de una página que contiene dicha estructura.
•Cuando la solución finalice: los datos de la estructura se guardan cuando se sale de la solución, independientemente de cuándo y cómo se salga de la solución.
•Con el último envío: los datos de la estructura se guardan cuando el flujo de trabajo avanza según lo diseñado, desde la primera hasta la última página y cuando se pulsa el botón Enviar. Si selecciona esta opción y se sale de la solución antes de que se pulse el botón Enviar, entonces no se guardarán los datos de la estructura.
•No automáticamente: la estructura no se guardará automáticamente, sino cuando se usen las acciones Guardar, Guardar en archivo o Guardar en HTTP/FTP para guardar datos.
La opción predeterminada es No automáticamente.
Los datos se pueden guardar en la BD cuando se desencadena el evento de una página o el evento del control para el que se ha definido la acción Guardar. Tal evento, podría ser por ejemplo, que el usuario final hiciera clic sobre el botón Enviar. En la captura de pantalla siguiente el botón "Enviar" se ubica en la barra de la tabla "Editar oficinas".
La acción "Guardar" se puede definir en la acción de la página o del "control". Puede acceder a los cuadros de diálogos correspondientes mediante el cuadro de diálogo "Todas las acciones" (Página | Vista general de las acciones). La captura de pantalla siguiente muestra un cuadro de diálogo "Acciones de la página" con la acción "Guardar" que se ha definido para el evento OnSubmitButtonClicked.
Nota: | si la BD presenta una clave privada, se usará para guardar aquellos registros que han sido modificados, agregados o borrados. Si la BD no presenta una clave privada, la tabla entera modificada se guardará en la BD y reemplazará a la tabla original. |
La acción Ejecutar (BD) supone un potente mecanismo a la hora de modificar datos de BD. Con esta acción podrá usar instrucciones SQL para actualizar y guardar datos. Consulte el apartado Diseño de páginas | Bases de datos | Acción Ejecutar (BD) para obtener más información.
Para indicar cómo guardar las tablas relacionadas haga clic en el botón Relaciones . Aparece un cuadro de diálogo en el que se ven las tablas relacionadas. En el cuadro combinado de cada una de ellas puede configurar estas opciones: (i) reemplazar todas las filas de tabla de la tabla relacionada; (ii) en la tabla relacionada, guardar solo los cambios; (iii) no guardar ningún cambio en la tabla relacionada.
Al tomar estas decisiones, tenga en cuenta todas las relaciones de clave privada y clave foránea que existan entre la tabla principal y sus tablas relacionadas.
También puede acceder a la configuración de la acción Guardar de la tabla relacionada de una tabla de BD desde el menú contextual de la fuente de página del panel Fuentes de página.
En el menú contextual de los nodos raíz $DB, seleccione el comando Filtrar columnas para abrir el cuadro de diálogo "Configuración para guardar columnas de la BD" (imagen siguiente) y seleccionar qué columnas se deben actualizar o insertar.
Este cuadro de diálogo muestra las columnas de la fuente de página de BD. Aquí puede especificar qué columnas se pueden actualizar y cuáles pueden tomar valores insertados. Cuando decimos "actualizar" nos referimos a aquellos datos modificados en elementos de fila que ya existen. Con "valores insertados" nos referimos a los datos de elementos de fila nuevos. La opción Insertar y Actualizar de las columnas están seleccionadas por defecto. Sin embargo, si quiere cambiar estas opciones, marque la casilla Configuración de filtrado distinta para instrucciones INSERT y UPDATE. Los atributos que tengan valores vacíos se pueden convertir en valores NULL en la BD. Para ello marque la casilla NULL de la columna correspondiente. Recuerde que los atributos que no contengan valores siempre se guardarán con el valor NULL.
En las columnas que no se puedan actualizar (porque sean columnas definidas por el usuario, columnas de valor fijo o columnas de valor calculado) se deshabilitarán las casillas Insertar, Actualizar y NULL. Por ejemplo, en la imagen anterior la columna id no se puede actualizar porque almacena valores fijos. Desactive las columnas que no quiere actualizar.
Puede indicar en qué orden se deben eliminar, actualizar o insertar los datos; para ello solo tiene que seleccionar estas acciones en el orden deseado en la parte inferior del cuadro de diálogo.
Si quiere restaurar la configuración para que todas las columnas se puedan actualizar, haga clic en el botón Restaurar valores predeterminados.
Para poder editar y guardar datos la estructura de la fuente de página debe incluir un elemento OriginalRowSet, que es una copia del elemento RowSet. Los datos originales se guardan en el elemento OriginalRowSet, mientras que los datos que se han editado se guardan en el elemento RowSet. Cuando se guarde la fuente de página, se calculará la diferencia que existe entre las dos estructuras (OriginalRowSet y RowSet) y la fuente de página se actualizará en función de esta diferencia. Si la modificación se realiza correctamente, los datos modificados se copian en OriginalRowSet para que OriginalRowSet contenga los datos de BD recién guardados y el proceso de modificación se puede repetir.
Tenga en cuenta estos puntos:
•El elemento OriginalRowSet no se crea por defecto en la estructura de la fuente de página de la BD. Para crearlo haga clic con el botón derecho en el nodo raíz de la fuente de página y active el comando Crear OriginalRowSet.
•El comando Crear OriginalRowSet se habilita para nodos raíz de tipo BD ($DB). Se trata un comando de conmutación que crea/elimina una estructura de datos OriginalRowSet que contiene los datos originales de la fuente de página.
•Hasta que los datos modificados se guarden en la BD, los datos de BD originales se conservan en la estructura OriginalRowSet. Esto garantiza que los datos de BD originales estén disponibles en la estructura.
•Puede usar la función XPath mt-db-original-row para recuperar los datos originales de una fila de BD que se ha modificado pero no se ha guardado aún.
Otra forma de guardar datos en una BD es iniciar una transacción independiente y enviarla. Las transacciones de la BD se encuentran disponibles como acciones para la página y los eventos del control.
Información sobre transacciones de BD Cada vez que una transacción necesita acceder a la BD, se crea automáticamente un acceso a la BD y después se cierra. A veces este comportamiento no es ideal, dependiendo de la configuración elegida. Por ejemplo, imagine que tiene dos fuentes de página de BD que quiere actualizar a la vez automáticamente. Si ambas tablas se guardan correctamente, entonces la transacción se confirma. De lo contrario se revierten los cambios. Para conseguir esta configuración será necesario crear las transacciones en función de la conexión.
Si comienza una transacción, todas las operaciones de BD que pertenezcan a la misma conexión de BD utilizarán esta transacción.
Al confirmarse una transacción, los cambios realizados se hacen visibles. Los cambios realizados se pueden revertir. En ese caso, aunque la acción Guardar se llevara a cabo en la fuente de la página, los cambios no se harán visibles si se revierten las modificaciones. Recuerde que, cuando se alcance el final del árbol de acciones, todas las transacciones que no estén cerradas (confirmadas o revertidas) se revertirán automáticamente. La ventana Mensajes muestra una advertencia a tal efecto cuando esto ocurre.
Es importante tener en cuenta que este comportamiento afecta a acciones de transacción explícitas, pero también a todas las operaciones de BD que utilicen la misma conexión que la transacción.
|