Compartir a través de


Crear formularios con datos locales y remotos

Puede crear formularios que pueden usar alternativamente datos locales y datos almacenados de forma remota (por ejemplo, en un servidor de base de datos). Esto le permite crear una aplicación prototipo con datos locales o de prueba, y después cambiar a datos remotos o activos sin cambios importantes en sus formularios.

Por ejemplo, si su aplicación de Visual FoxPro es un cliente para una tabla grande de clientes almacenada en un servidor de base de datos, puede crear un archivo .dbf local que contiene una muestra pequeña pero representativa de datos. Entonces puede crear, probar y depurar sus formularios en base a este pequeño conjunto de datos. Cuando esté preparado para distribuir la aplicación, puede vincular el formulario al conjunto grande de datos.

La clave para poder cambiar entre datos remotos y locales es asegurarse de que usa vistas en lugar de vincular directamente el formulario (y sus controles) a una tabla. Para tener acceso a datos remotos, debe usar una vista en cualquier evento. Por lo tanto, para facilitar el cambio entre datos locales y remotos, cree también una vista para los datos locales. Cuando cree el formulario, puede agregar ambas vistas a sus entornos de datos y, a continuación, cambiar de un tipo a otro según sea necesario.

Para crear un formulario que pueda cambiar entre datos locales y datos remotos

  1. Cree dos vistas de los datos, una que apunte a los datos remotos, y otra que apunte a los datos locales.

  2. Cree un nuevo formulario.

  3. Abra el Diseñador de entornos de datos para el formulario y, a continuación, agregue ambas vistas.

  4. Haga clic con el botón secundario en el Diseñador de entornos de datos y, a continuación, elija Propiedades.

  5. En la ventana Propiedades, establezca la propiedad Alias para ambos cursores con el mismo nombre.

  6. Establezca la propiedad OpenViews del entorno de datos en 1 – Sólo local o 2 – Sólo remota, en función de qué vista desee usar al ejecutar el formulario.

    Nota   Como usa el mismo alias para ambas vistas, no elija 0 – Local y remota (predeterminada).

  7. En el formulario, agregue los controles que necesite y establezca sus propiedades ControlSource a los campos apropiados de la vista. Como las dos vistas tienen el mismo alias, los controles responderán automáticamente a la vista que esté activa cuando se ejecute el formulario.

Después de crear el formulario, puede cambiar los alias de vistas si cambia la propiedad OpenViews del entorno de datos. Puede hacerlo en el Entorno de datos mientras usa el Diseñador de formularios. De forma alternativa, puede escribir código y adjuntarlo a un evento, lo cual es útil si quiere cambiar vistas en tiempo de ejecución. Por ejemplo, puede colocar el código en el evento Activate del formulario:

THISFORM.DataEnvironment.OpenViews = 2 && Use remote view

Si crea un formulario que puede alternar entre datos locales y remotos, también debe diseñar el código de desplazamiento para acomodar ambas vistas, en particular si diseña formularios con relaciones de uno a varios. Por ejemplo, si su formulario sólo tiene acceso a una tabla o vista local, puede usar código como el siguiente en un botón de comando Siguiente para ir al siguiente registro en un cursor:

SKIP 1
THISFORM.Refresh()

Sin embargo, este código es ineficaz cuando se desplaza en una vista remota, porque supone que el cursor contiene todos los datos que requiere el formulario. Como regla general, debe minimizar la cantidad de datos que transfiere desde el origen de datos remoto.

La solución consiste en usar una vista parametrizada. Por ejemplo, la definición para una vista usada para modificar información de clientes podría ser:

SELECT * FROM CUSTOMERS WHERE ;
 CUSTOMERS.COMPANY_NAME = ?pCompanyName

Cuando el formulario se ejecuta, puede pedir al usuario un nombre de cliente mediante un cuadro de diálogo o permitiendo al usuario escribir un nombre en un cuadro de texto. El código para un botón Mostrar sería similar al siguiente:

pCompanyName = THISFORM.txtCompanyName.Value
REQUERY("customer")
THISFORM.Refresh()

Para obtener más información acerca de las vistas parametrizadas, consulte “Crear una vista parametrizada” en Crear vistas.

Vea también

Establecer el área de diseño de un formulario | Establecer plantillas de formularios | Crear formularios | Diseñador de entornos de datos | Ventana Propiedades | OpenViews