Partilhar via


Como: Atualizar uma fonte de dados com dados de um controle de Host

Você pode acoplar um controle de host a uma fonte de dados e atualizar a fonte de dados com as alterações feitas aos dados no controle. Há duas etapas principais nesse processo:

  1. Atualize a fonte de dados na memória com os dados modificados no controle. Normalmente, a fonte de dados na memória é um DataSet, um DataTable, ou alguns outros dados do objeto.

  2. Atualize o banco de dados com os dados alterados na fonte de dados na memória. Isso é aplicável somente se a fonte de dados é conectada a um banco de dados de back-end, como, por exemplo, um banco de dados de SQL Server ou acesso de Microsoft Office.

Para obter mais informações sobre controles de host e a vinculação de dados, consulte Itens de host e a visão geral sobre controles de Host e A ligação de dados a controles em soluções do Office.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para os seguintes aplicativos: Excel 2007 e Excel 2010; Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Atualizar a fonte de dados na memória

Por padrão, os controles de host que permitem a ligação de dados simples (como, por exemplo, controles de conteúdo em um documento do Word ou um controle de intervalo nomeado em uma planilha do Excel) não salvam as alterações de dados para a fonte de dados na memória. Isto é, quando um usuário final altera um valor em um controle de host e, em seguida, navega fora do controle, o novo valor no controle não é salvo automaticamente a fonte de dados.

Para salvar os dados na fonte de dados, você pode escrever código que atualiza a fonte de dados em resposta a um evento específico no tempo de execução ou você pode configurar o controle para atualizar automaticamente a fonte de dados quando o valor no controle alterado.

Você não precisa salvar ListObject as alterações de fonte de dados na memória. Quando você vincula um ListObject o controle de dados, o ListObject controle salva automaticamente as alterações na fonte de dados na memória sem a necessidade de código adicional.

Para atualizar a fonte de dados na memória em tempo de execução

  • Chamar o WriteValue método de Binding objeto que vincula o controle de fonte de dados.

    O exemplo seguinte salva as alterações feitas em um NamedRange controle em uma planilha do Excel para a fonte de dados. Este exemplo pressupõe que você tenha um NamedRange controle chamado namedRange1 com sua Value2 propriedade vinculada a um campo em uma fonte de dados.

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

Atualizando automaticamente a fonte de dados na memória

Você também pode configurar um controle para que ela atualiza automaticamente a fonte de dados na memória. Em um projeto de nível de documento, você pode fazer isso usando o código ou o designer. Em um projeto de nível de aplicativo, você deve usar o código.

Para definir um controle para atualizar automaticamente a fonte de dados na memória por meio de código

  • Use o System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged o modo do Binding objeto que vincula o controle de fonte de dados. Há duas opções para atualizar a fonte de dados:

    • Para atualizar a fonte de dados quando o controle é validado, defina esta propriedade como System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Para atualizar a fonte de dados quando o valor da propriedade do controle ligado a dados é alterado, defina esta propriedade como System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      ObservaçãoObservação

      O System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged opção não se aplica a controles de host do Word, porque o Word não oferecem - alterações no documento ou a alteração de controle notificações. No entanto, essa opção pode ser usada para controles de Windows Forms em documentos do Word.

    O exemplo a seguir configura um NamedRange o controle para atualizar automaticamente os dados de origem quando o valor no controle as alterações. Este exemplo pressupõe que você tenha um NamedRange controle chamado namedRange1 com sua Value2 propriedade vinculada a um campo em uma fonte de dados.

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

Para definir um controle para atualizar automaticamente a fonte de dados na memória usando o designer

  1. No Visual Studio, abra o documento do Word ou uma pasta de trabalho do Excel no designer.

  2. Clique no controle que você deseja atualizar automaticamente a fonte de dados.

  3. No Propriedades janela, expanda o (DataBindings) propriedade.

  4. Ao lado do (Avançado) propriedade, clique no botão de reticências (Captura de tela de VisualStudioEllipsesButton).

  5. No formatação e avançada de ligação caixa de diálogo, clique no O modo de atualização de fonte de dados na lista suspensa e selecione um dos seguintes valores:

    • Para atualizar a fonte de dados quando o controle é validado, selecione OnValidation.

    • Para atualizar a fonte de dados quando o valor da propriedade do controle ligado a dados é alterado, selecione OnPropertyChanged.

      ObservaçãoObservação

      O OnPropertyChanged opção não se aplica a controles de host do Word, porque o Word faz as notificações não oferta-alterações no documento ou a alteração de controle. No entanto, essa opção pode ser usada para controles de Windows Forms em documentos do Word.

  6. Fechar o a formatação e avançada de ligação caixa de diálogo.

Atualizando o banco de dados.

Se a fonte de dados na memória está associada um banco de dados, você deve atualizar o banco de dados com as alterações à fonte de dados. Para obter mais informações sobre como atualizar um banco de dados, consulte Salvar dados em Datasets e Como: Atualizar dados usando um TableAdapter.

Para atualizar o banco de dados.

  1. Chamar o EndEdit método de BindingSource para o controle.

    O BindingSource é gerado automaticamente quando você adiciona um controle ligado a dados para um documento ou pasta de trabalho em tempo de design. O BindingSource conecta o controle para o dataset tipado em seu projeto. For more information, see Visão geral sobre o componente BindingSource.

    O exemplo de código a seguir pressupõe que o seu projeto contém um BindingSource chamado customersBindingSource.

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. Chamar o Update método gerado TableAdapter em seu projeto.

    O TableAdapter é gerado automaticamente quando você adiciona um controle ligado a dados para um documento ou pasta de trabalho em tempo de design. O TableAdapter conecta o dataset tipado em seu projeto para banco de dados. For more information, see Visão geral do TableAdapter.

    O exemplo de código a seguir pressupõe que você tenha uma conexão com a tabela Customers no banco de dados Northwind e o seu projeto contém um TableAdapter chamado customersTableAdapter e um dataset tipado chamado northwindDataSet.

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

Consulte também

Tarefas

Como: Atualizar dados usando um TableAdapter

Como: Percorra os registros de banco de dados em uma planilha

Como: Preencher as planilhas com dados de um banco de dados.

Como: Preencher documentos com dados de objetos

Como: Preencher documentos com dados de um banco de dados.

Como: Preencher documentos com dados de serviços

Conceitos

Salvar dados em Datasets

Outros recursos

A ligação de dados a controles em soluções do Office