Compartir a través de


Actualizar múltiples tablas en una vista

Puede actualizar múltiples tablas base desde una vista. Cuando la vista combine dos o más tablas, debe establecer las propiedades para asegurarse de que sólo sea actualizable el lado varios de la consulta de la vista.

Las vistas se actualizan tabla por tabla. Debe asegurarse de que para cada tabla a la que se tiene acceso en una vista, el conjunto de campos clave sea una clave única tanto para el conjunto de resultados de la vista como para la tabla base.

Para hacer actualizable una vista de varias tablas

  • En el Diseñador de vistas, elija la ficha Criterios de actualización y seleccione las tablas y los nombres de los campos que desea actualizar.

    –O bien–

  • Use la función DBSETPROP( ).

En la mayoría de los casos, los valores predeterminados proporcionados por Visual FoxPro preparan una vista de múltiples tablas para que sea actualizable, aunque cree la vista por medio de programación. El ejemplo de código siguiente crea y establece explícitamente propiedades para actualizar una vista de dos tablas. Puede usar este ejemplo como guía para personalizar los valores de las propiedades de actualización de una vista.

Actualizar múltiples tablas en una vista

Código Comentarios
CREATE SQL VIEW emp_cust_view AS ;
   SELECT employee.emp_id, ;
   employee.phone, customer.cust_id, ;
   customer.emp_id, customer.contact, ;
   customer.company ;
   FROM employee, customer ;
   WHERE employee.emp_id = customer.emp_id
Crea una vista que tiene acceso a campos de dos tablas.
DBSETPROP('emp_cust_view', 'View', 'Tables',
'employee, customer')
Configura las tablas para que se puedan actualizar.
DBSETPROP('emp_cust_view.emp_id', 'Field', ;                'UpdateName', 'employee.emp_id')
DBSETPROP('emp_cust_view.phone', 'Field', ;                'UpdateName', 'employee.phone')
DBSETPROP('emp_cust_view.cust_id', 'Field', ;             'UpdateName', 'customer.cust_id')
DBSETPROP('emp_cust_view.emp_id1', 'Field', ;             'UpdateName', 'customer.emp_id')
DBSETPROP('emp_cust_view.contact', 'Field', ;             'UpdateName', 'customer.contact')
DBSETPROP('emp_cust_view.company', 'Field', ;             'UpdateName', 'customer.company')
Configura los nombres de actualización.
DBSETPROP('emp_cust_view.emp_id', 'Field', ;                'KeyField', .T.)
Establece una clave única de campo único para la tabla Employee.
DBSETPROP('emp_cust_view.cust_id', 'Field', ;
            'KeyField', .T.)
DBSETPROP('emp_cust_view.emp_id1', 'Field', ;
            'KeyField', .T.)
Establece una clave única de dos campos para la tabla Customer.
DBSETPROP('emp_cust_view.phone', 'Field', ; 
            'UpdateableField', .T.)
DBSETPROP('emp_cust_view.contact', 'Field', ;             'UpdateableField', .T.)
DBSETPROP('emp_cust_view.company', 'Field', ;             'UpdateableField', .T.)
Establece los campos actalizables. Normalmente, los campos clave no son actualizables.
DBSETPROP('emp_cust_view', 'View', ;
            'SendUpdates', .T.)
Activa la capacidad de actualización.
GO TOP
REPLACE employee.phone WITH "(206)111-2222"
REPLACE customer.contact WITH "John Doe"
Modifica los datos de la vista.
TABLEUPDATE()
Confirma los cambios al actualizar las tablas base Employee y Customer.

Personalizar vistas con el diccionario de datos

Como las vistas están almacenadas en una base de datos, puede crear:

  • Títulos
  • Comentarios para la vista y los campos de vista
  • Valores predeterminados para campos de vista
  • Reglas a nivel de campo y a nivel de fila para mensajes de error de regla

Las características del diccionario de datos para vistas son similares en su funcionamiento a sus homólogos para tablas de base de datos. Sin embargo, se usa el lenguaje en lugar del Diseñador de tablas para crear títulos, comentarios, valores predeterminados y reglas para vistas.

Vea también

Actualizar datos en una vista | Crear valores predeterminados para campos de vista | Crear reglas en campos y filas de vistas | Diseñador de vistas | DBSETPROP( ) | Actualizar datos | Personalizar vistas