Cómo: Actualizar un origen de datos con datos de un control Host

Puede enlazar un control host a un origen de datos y actualizar el origen de datos con los cambios que se hagan en los datos del control. Este proceso tiene dos pasos principales:

  1. Actualizar el origen de datos en memoria con los datos modificados en el control. Normalmente, el origen de datos en memoria es DataSet, DataTable o algún otro objeto de datos.

  2. Actualizar la base de datos con los datos modificados en el origen de datos en memoria. Esto solo es aplicable si el origen de datos está conectado a una base de datos back-end, como una base de datos de SQL Server o de Microsoft Office Access.

Para obtener más información sobre controles host y enlace de datos, vea Información general sobre elementos y controles Host y Enlazar datos a controles en soluciones de Office.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento y los proyectos de nivel de aplicación para las siguientes aplicaciones: Excel 2007 y Excel 2010; Word 2007 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Actualizar el origen de datos en memoria

De forma predeterminada, los controles host que habilitan el enlace de datos simple (como los controles de contenido en un documento de Word o un control de rango con nombre en una hoja de cálculo de Excel) no guardan los cambios de los datos en el origen de datos en memoria. Es decir, cuando un usuario final cambia un valor en un control host y, a continuación, navega fuera del control, el nuevo valor del control no se guarda automáticamente en el origen de datos.

Para guardar los datos en el origen de datos, puede escribir código que actualice en tiempo de ejecución el origen de datos en respuesta a un evento concreto o puede configurar el control para actualizar automáticamente el origen de datos cuando cambia el valor en el control.

No necesita guardar los cambios de ListObject en el origen de datos en memoria. Al enlazar un control ListObject a los datos, el control ListObject guarda automáticamente los cambios en el origen de datos en memoria sin requerir código adicional.

Para actualizar el origen de datos en memoria en tiempo de ejecución

  • Llame al método WriteValue del objeto Binding que enlaza el control al origen de datos.

    En el ejemplo siguiente se guardan los cambios hechos en un control NamedRange en una hoja de cálculo de Excel en el origen de datos. Este ejemplo supone que tiene un control NamedRange denominado namedRange1 con su propiedad Value2 enlazada a un campo de un origen de datos.

    Me.NamedRange1.DataBindings("Value2").WriteValue()
    
    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Actualizar automáticamente el origen de datos en memoria

También puede configurar un control para que actualice automáticamente el origen de datos en memoria. En un proyecto en el nivel del documento, puede hacerlo utilizando código o el diseñador. En un proyecto en el nivel de la aplicación, debe utilizar código.

Para establecer un control que actualice automáticamente el origen de datos en memoria mediante código

  • Use el modo System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged del objeto Binding que enlaza el control al origen de datos. Hay dos opciones para actualizar el origen de datos:

    • Para actualizar el origen de datos cuando se valida el control, establezca esta propiedad en System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Para actualizar el origen de datos cuando cambia el valor de la propiedad enlazada a datos del control, establezca esta propiedad en System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      Nota

      La opción System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged no se aplica a controles host de Word, porque Word no proporciona notificaciones de cambios en documentos o en controles. Sin embargo, se puede utilizar con controles de formularios Windows Forms en documentos de Word.

    En el ejemplo siguiente se configura un control NamedRange que actualiza automáticamente el origen de datos cuando cambia el valor del control. Este ejemplo supone que tiene un control NamedRange denominado namedRange1 con su propiedad Value2 enlazada a un campo de un origen de datos.

    Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _
        DataSourceUpdateMode.OnPropertyChanged
    
    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

Para establecer con el diseñador un control que actualice automáticamente el origen de datos en memoria

  1. En Visual Studio, abra el documento de Word o un libro de Excel en el diseñador.

  2. Haga clic en el control cuyo origen de datos desea actualizar automáticamente.

  3. En la ventana Propiedades, expanda la propiedad (DataBindings).

  4. Junto a la propiedad (Advanced), haga clic en el botón de puntos suspensivos (Captura de pantalla de VisualStudioEllipsesButton).

  5. En el cuadro de diálogo Formato y enlace de datos avanzado, haga clic en la lista desplegable Modo de actualización del origen de datos y seleccione uno de los valores siguientes:

    • Para actualizar el origen de datos cuando se valida el control, seleccione OnValidation.

    • Para actualizar el origen de datos cuando cambia el valor de la propiedad enlazada a datos del control, seleccione OnPropertyChanged.

      Nota

      La opción OnPropertyChanged no se aplica a controles host de Word, porque Word no proporciona notificaciones de cambios en documentos o en controles. Sin embargo, se puede utilizar con controles de formularios Windows Forms en documentos de Word.

  6. Cierre el cuadro de diálogo Formato y enlace de datos avanzado.

Actualizar la base de datos

Si el origen de datos en memoria está asociado a una base de datos, debe actualizar la base de datos con los cambios hechos en el origen de datos. Para obtener más información sobre la actualización de bases de datos, vea Guardar los datos en conjuntos de datos y Cómo: Actualizar datos utilizando un TableAdapter.

Para actualizar la base de datos

  1. Llame al método EndEdit de la clase BindingSource para el control.

    Se genera el BindingSource automáticamente al agregar en tiempo de diseño un control enlazado a datos a un documento o libro. El BindingSource conecta el control al conjunto de datos con tipo de su proyecto. Para obtener más información, vea Información general sobre el componente BindingSource.

    En el ejemplo de código siguiente se supone que la aplicación contiene un control BindingSource denominado customersBindingSource.

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. Llame al método Update del TableAdapter generado en su proyecto.

    Se genera el TableAdapter automáticamente al agregar en tiempo de diseño un control enlazado a datos a un documento o libro. El TableAdapter conecta el conjunto de datos con tipo del proyecto a la base de datos. Para obtener más información, vea Información general sobre TableAdapter.

    En el ejemplo de código siguiente se supone que tiene una conexión a la tabla Customers de la base de datos Northwind y que su proyecto contiene un TableAdapter denominado customersTableAdapter y un conjunto de datos con tipo denominado northwindDataSet.

    Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
    
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    

Vea también

Tareas

Cómo: Actualizar datos utilizando un TableAdapter

Cómo: Desplazarse por los registros de una base de datos en una hoja de cálculo

Cómo: Rellenar hojas de cálculo con datos de una base de datos

Cómo: Rellenar documentos con datos de objetos

Cómo: Rellenar documentos con datos de una base de datos

Cómo: Rellenar documentos con datos de servicios

Conceptos

Guardar los datos en conjuntos de datos

Otros recursos

Enlazar datos a controles en soluciones de Office