Tutorial: Enlace de datos simple en un proyecto en el nivel de la aplicación

Puede enlazar datos a controles host y controles de Windows Forms en proyectos de nivel de aplicación. En este tutorial se muestra cómo agregar controles a un documento de Microsoft Office Word y enlazarlos a datos en tiempo de ejecución.

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

En este tutorial se muestran las tareas siguientes:

  • Agregar un ContentControl a un documento en tiempo de ejecución.

  • Crear un BindingSource que conecta el control a una instancia de un conjunto de datos.

  • Permitir al usuario desplazarse por los registros y verlos en el control.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).

Crear un proyecto nuevo

El primer paso consiste en crear un proyecto de complemento de Word.

Para crear un nuevo proyecto

  1. Cree un proyecto de complemento de Word con el nombre Rellenar documentos desde una base de datos mediante Visual Basic o C#.

    Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre el archivo ThisAddIn.vb o ThisAddIn.cs y agrega el proyecto Rellenar documentos de una base de datos al Explorador de soluciones.

  2. Si su proyecto está destinado a .NET Framework 4, agregue una referencia al ensamblado Microsoft.Office.Tools.Word.v4.0.Utilities.dll. Esta referencia es obligatoria para agregar mediante programación los controles de Windows Forms al documento posteriormente en este tutorial.

Crear un origen de datos

Utilice la ventana Orígenes de datos para agregar al proyecto un conjunto de datos con tipo.

Para agregar un conjunto de datos con tipo al proyecto

  1. En el menú Datos, haga clic en Agregar nuevo elemento.

    Se abrirá el Asistente para la configuración de orígenes de datos.

  2. Haga clic en Base de datos y, a continuación, haga clic en Siguiente.

  3. Si ya existe una conexión con la base de datos AdventureWorksLT, elija esta conexión y, a continuación, haga clic en Siguiente.

    De lo contrario, haga clic en Nueva conexión y utilice el cuadro de diálogo Agregar conexión para crear la nueva conexión. Para obtener más información, vea Cómo: Conectarse a los datos de una base de datos.

  4. En la página Guardar la cadena de conexión en el archivo de configuración de la aplicación, haga clic en Siguiente.

  5. En la página Elija los objetos de base de datos, expanda Tablas y, a continuación, seleccione Customer (SalesLT).

  6. Haga clic en Finalizar.

    El archivo AdventureWorksLTDataSet.xsd se agrega al Explorador de soluciones. Este archivo define los siguientes elementos:

    • Un conjunto de datos con tipo denominado AdventureWorksLTDataSet. Este conjunto de datos representa el contenido de la tabla Customer (SalesLT) de la base de datos AdventureWorksLT.

    • Un objeto TableAdapter denominado CustomerTableAdapter. Este TableAdapter puede usarse para leer y escribir datos en AdventureWorksLTDataSet. Para obtener más información, vea Información general sobre TableAdapter.

    Estos dos objetos se utilizarán más adelante en este tutorial.

Crear controles y enlazarlos a datos

La interfaz para ver los registros de la base de datos de este tutorial es muy básica y se crea dentro del documento. Un ContentControl muestra un registro de base de datos cada vez y dos controles Button le permiten desplazarse de un registro a otro. El control de contenido utiliza BindingSource para conectarse a la base de datos.

Para obtener más información sobre cómo enlazar controles a datos, vea Enlazar datos a controles en soluciones de Office.

Para crear la interfaz en el documento

  1. En la clase ThisAddIn, declare los controles siguientes para mostrar y desplazarse por la tabla Customer de la base de datos AdventureWorksLTDataSet.

    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private customerTableAdapter As AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter
    Private customerBindingSource As System.Windows.Forms.BindingSource
    Private customerContentControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Private WithEvents button1 As Microsoft.Office.Tools.Word.Controls.Button
    Private WithEvents button2 As Microsoft.Office.Tools.Word.Controls.Button
    
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter;
    private System.Windows.Forms.BindingSource customerBindingSource;
    private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl;
    private Microsoft.Office.Tools.Word.Controls.Button button1;
    private Microsoft.Office.Tools.Word.Controls.Button button2;
    
  2. En el método ThisAddIn_Startup, agregue el código siguiente para inicializar el conjunto de datos y llenarlo con información de la base de datos AdventureWorksLTDataSet.

    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.customerTableAdapter = New AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter()
    Me.customerTableAdapter.Fill(Me.adventureWorksDataSet.Customer)
    Me.customerBindingSource = New System.Windows.Forms.BindingSource()
    
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.customerTableAdapter = new AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter();
    this.customerTableAdapter.Fill(this.adventureWorksDataSet.Customer);
    this.customerBindingSource = new System.Windows.Forms.BindingSource();
    
  3. Agregue el código siguiente al método ThisAddIn_Startup. Esto genera un elemento host que extiende el documento. Para obtener más información, vea Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución.

    Dim currentDocument As Word.Document = Me.Application.ActiveDocument
    
    ' Use the following line of code in projects that target the .NET Framework 4.
    Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
    ' In projects that target the .NET Framework 3.5, use the following line of code instead.
    ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
    Word.Document currentDocument = this.Application.ActiveDocument;
    
    // Use the following line of code in projects that target the .NET Framework 4.
    Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
    // In projects that target the .NET Framework 3.5, use the following line of code instead.
    // Document extendedDocument = currentDocument.GetVstoObject();
    
  4. Defina varios intervalos al principio del documento. Estos intervalos identifican dónde insertar texto y colocar los controles.

    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.Text = "The companies listed in the AdventureWorksLT database:   "
    extendedDocument.Paragraphs(2).Range.Text = "  "
    
    Dim range1 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.First
    Dim range2 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.Last
    Dim range3 As Word.Range = extendedDocument.Paragraphs(1).Range.Characters.Last
    
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.Text = 
        "The companies listed in the AdventureWorksLT database:   \n";
    extendedDocument.Paragraphs[2].Range.Text = "  "; 
    
    Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First;
    Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last;
    Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
    
  5. Agregue los controles de la interfaz a los intervalos previamente definidos.

    Me.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1")
    Me.button1.Text = "Previous"
    Me.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2")
    Me.button2.Text = "Next"
    
    Me.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(range3, _
        "richTextContentControl1")
    
    this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1");
    this.button1.Text = "Previous";
    this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2");
    this.button2.Text = "Next";
    
    this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(
        range3, "richTextContentControl1");
    
  6. Enlace el control de contenido a AdventureWorksLTDataSet utilizando BindingSource. Para los programadores de C#, agregue dos controladores de eventos para los controles Button.

    Me.customerBindingSource.DataSource = Me.adventureWorksDataSet.Customer
    Me.customerContentControl.DataBindings.Add("Text", Me.customerBindingSource, _
        "CompanyName", True, Me.customerContentControl.DataBindings.DefaultDataSourceUpdateMode)
    
    this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer;
    this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, 
        "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode);
    
    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    
  7. Agregue el código siguiente para navegar por los registros de la base de datos.

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click
        Me.customerBindingSource.MovePrevious()
    End Sub
    
    Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button2.Click
        Me.customerBindingSource.MoveNext()
    End Sub
    
    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

Probar el complemento

Al abrir Word, el control de contenido muestra los datos del conjunto de datos AdventureWorksLTDataSet. Desplácese por los registros de la base de datos haciendo clic en los botones Siguiente y Anterior.

Para probar el complemento

  1. Presione F5.

    Se crea y se rellena con datos un control de contenido denominado customerContentControl. Al mismo tiempo, se agregan al proyecto un objeto de conjunto de datos denominado adventureWorksLTDataSet y una clase BindingSource denominada customerBindingSource. El control ContentControl se enlaza al componente BindingSource, que a su vez se enlaza al objeto de base de datos.

  2. Haga clic en los botones Siguiente y Anterior para desplazarse por los registros de la base de datos.

Vea también

Tareas

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

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

Cómo: Rellenar documentos con datos de servicios

Cómo: Rellenar documentos con datos de objetos

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

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

Tutorial: Enlace de datos simple en un proyecto en el nivel del documento

Tutorial: Enlace de datos complejo en un proyecto en el nivel del documento

Cómo: Rellenar documentos con datos de objetos

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

Referencia

Información general sobre el componente BindingSource

Conceptos

Información general sobre el uso de archivos de bases de datos locales en soluciones de Office

Información general sobre orígenes de datos

Enlazar controles de Windows Forms a datos en Visual Studio

Información general sobre el uso de archivos de bases de datos locales en soluciones de Office

Conectar a los datos en aplicaciones de Windows Forms

Otros recursos

Datos en las soluciones de Office

Enlazar datos a controles en soluciones de Office