Compartir a través de


Usar sesiones de datos

Para asegurarse de que todos los usuarios de un entorno compartido disponen de un duplicado exacto y seguro del entorno, y que múltiples instancias de un formulario pueden funcionar independientemente, Visual FoxPro proporciona sesiones de datos.

Una sesión de datos es una representación del entorno de trabajo dinámico actual. Podría considerar la sesión de datos como un entorno de datos en miniatura dentro de una sesión de Visual FoxPro abierta en un equipo. Cada sesión de datos contiene:

  • Una copia de los elementos en el entorno de datos del formulario
  • Cursores que representan las tablas abiertas, sus índices y relaciones.

El concepto de una sesión de datos se entiende fácilmente cuando se considera lo que ocurre al abrir el mismo formulario simultáneamente en dos estaciones de trabajo diferentes en una aplicación multiusuario. En este caso, cada estación de trabajo ejecuta una sesión de Visual FoxPro diferente y, por tanto, tiene su propio conjunto de áreas de trabajo: cursores que representan las tablas base abiertas, los índices y las relaciones.

Sin embargo, si abre en un solo equipo múltiples instancias del mismo formulario en un solo proyecto, dentro de la misma sesión de Visual FoxPro, los formularios comparten la sesión de datos predeterminada, lo que representa un único entorno de trabajo dinámico. Cada instancia del formulario abierto en la misma sesión de Visual FoxPro usa el mismo conjunto de áreas de trabajo y las acciones en una única instancia de un formulario que mueven el puntero de registro en un área de trabajo afectan automáticamente a otras instancias del mismo formulario.

Usar sesiones privadas de datos

Si desea tener más control sobre múltiples instancias de un formulario, puede implementar sesiones privadas de datos. Cuando el formulario utiliza sesiones privadas de datos, Visual FoxPro crea una nueva sesión de datos para cada instancia del control Form, FormSet o Toolbar que crea la aplicación. Cada sesión privada de datos contiene:

  • Una copia diferente de cada tabla, índice y relación del entorno de datos del formulario.
  • Un número ilimitado de áreas de trabajo.
  • Punteros de registro para la copia de cada tabla, independientes de las tablas base del formulario.

El número de sesiones de datos disponibles está limitado sólo por la memoria y el espacio en disco disponible en el sistema.

Las sesiones privadas de datos se implementan al establecer la propiedad DataSession para el formulario. La propiedad DataSession tiene dos configuraciones:

  • 1 – Sesión predeterminada de datos (la configuración predeterminada).
  • 2 – Sesión privada de datos.

El valor predeterminado de la propiedad DataSession de un formulario es 1.

Para activar las sesiones privadas de datos

Elija una de las opciones siguientes:

  • En el Diseñador de formularios, establezca la propiedad DataSession del formulario en 2 – Sesión privada de datos.

    –O bien–

  • En el código, establezca la propiedad DataSession en 2.

    Por ejemplo, escriba:

    frmFormName.DataSession = 2
    

    Nota   La propiedad DataSession sólo se puede establecer en tiempo de diseño. La propiedad DataSession es de sólo lectura en tiempo de ejecución.

Cuando un formulario utiliza sesiones privadas de datos, cada instancia de un formulario abierta en un solo equipo en una única sesión de Visual FoxPro usa su propio entorno de datos. El uso de sesiones privadas de datos es similar a la ejecución simultánea del mismo formulario desde diferentes estaciones de trabajo.

Múltiples sesiones de datos equivalentes

Identificar sesiones de datos

Cada sesión privada de datos se identifica por separado. Puede ver el contenido de cada sesión de datos en la ventana Sesión de datos. También puede cambiar la descripción de la sesión de datos mediante comandos en el código del evento Load.

Puede ver el número de identificación de cada sesión de datos mediante la propiedad de tiempo de ejecución DataSessionID. El ejemplo siguiente muestra la propiedad DataSessionID de un formulario denominado frmMyForm:

DO FORM frmMyForm
? frmMyForm.DataSessionID

Si activa el formulario mediante la cláusula NAME, puede usar el nombre del formulario para tener acceso a la propiedad DataSessionID, como en el código siguiente:

DO FORM MyForm NAME one
? one.DataSessionID

La propiedad DataSessionID sirve para identificar una sesión de datos determinada. Evite cambiar la propiedad DataSessionID de una instancia de un formulario porque los controles enlazados a datos pierden sus orígenes de datos cuando se modifica esta propiedad.

Actualizar datos con múltiples instancias de un formulario

Mientras que las sesiones privadas de datos generan áreas de trabajo diferentes que contienen copias independientes de las tablas abiertas, índices y relaciones de un formulario, cada copia del formulario hace referencia a los mismos archivos de tablas base y de índices base subyacentes. Cuando un usuario actualiza un registro en una instancia de un formulario, se actualiza la tabla base a la que hace referencia el formulario. Los cambios realizados en otra instancia del formulario pueden verse al desplazarse por el registro modificado.

Los bloqueos realizados en registros o tablas en una sesión privada de datos son respetados por otras sesiones privadas de datos. Por ejemplo, si el usuario de la sesión de datos 1 pone un bloqueo en un registro, el usuario de la sesión de datos 2 no puede bloquear el registro. Si el usuario de la sesión 1 abre una tabla de forma exclusiva, el usuario de la sesión de datos 2 no puede abrir la tabla. Respetando los bloqueos realizados por otras sesiones de datos, Visual FoxPro protege la integridad de las actualizaciones en las tablas base subyacentes.

Personalizar el entorno de una sesión de datos

Debido a que las sesiones de datos controlan el alcance de determinados comandos SET, puede usar sesiones privadas de datos para establecer configuraciones personalizadas de comandos SET dentro de una sola sesión de Visual FoxPro.

Por ejemplo, el comando SET EXACT, que controla las reglas utilizadas al comparar cadenas de caracteres de diferentes longitudes, pertenece al ámbito de la sesión de datos actual. La configuración predeterminada de SET EXACT es OFF, lo que especifica que, para ser equivalentes, las expresiones deben coincidir, carácter a carácter, hasta que se llega al final de las expresiones en el lado derecho. Tal vez desee activar búsquedas aproximadas o equivalentes; para ello, establezca SET EXACT como OFF para la sesión predeterminada de datos. Sin embargo, la aplicación podría contener un formulario determinado que requiriera coincidencias exactas. Podría establecer la propiedad DataSession como 2 para el formulario que requiere coincidencias exactas, para activar las sesiones privadas de datos y después establecer SET EXACT a ON para ese formulario. Si ejecuta un comando SET sólo para el formulario que utiliza sesiones privadas de datos, se mantiene intacta la configuración global de la sesión de Visual FoxPro a la vez que permite la configuración personalizada para un formulario determinado.

Ignorar la asignación automática de sesión privada de datos

Cuando las sesiones privadas de datos para un formulario están en uso, los cambios realizados en los datos de un formulario no se representan automáticamente en otras instancias del mismo formulario. Si desea que todas las instancias de un formulario tengan acceso a los mismos datos y reflejen automáticamente los cambios realizados en datos comunes, puede ignorar la asignación automática de sesión de datos.

Para ignorar la asignación automática de sesión de datos

  • Utilice uno de estos comandos:

    SET DATASESSION TO 1
    

    –O bien–

    SET DATASESSION TO
    

Ambos comandos permiten controlar la sesión de datos predeterminada mediante la ventana Comandos y el Administrador de proyectos.

Vea también

Bloquear datos | Almacenar datos en búfer | Programar para acceso compartido | Diseñador de formularios | DataSession | DataSessionID