Como recuperar valores de DataRows que são marcados "Excluídos" usando o Visual Basic .NET

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 310370
Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.Data.SqlClient
  • System.console

NESTA TAREFA

Sumário
Você pode usar objetos ADO.NET DataTable para excluir linhas e marcá-los como "Excluídos". Este artigo demonstra como recuperar os valores de uma linha cuja enumeração DataRowState é definida como DataRowState.Deleted .

back to the top

Descrição da técnica

Você pode usar o valor de enumeração DataRowVersion.Original para recuperar os valores de uma linha que tem o valor de enumeração DataRowState.Deleted . Você deve usar DataRowVersion.Original porque os valores de uma linha excluída não estão disponíveis para o estado atual ( DataRowVersion.Current ).

Se você tentar fazer referência a valores de coluna atual de um objeto DataRow que tem um valor de propriedade RowState de DataRowState.Deleted , você receber a seguinte mensagem de erro:
Uma exceção sem tratamento do digite 'System.Data.DeletedRowInaccessibleException'
ocorreu no system.data.dll
Obter informações adicionais: informações de linha excluída não podem ser acessadas através da linha.
back to the top

Etapas para criar o exemplo

O código de exemplo esta seção demonstra como reproduzir o erro anterior. Este exemplo também demonstra como usar DataRowVersion.Original para obter os valores de coluna da linha excluída.
  1. Crie um novo aplicativo Console Visual Basic projeto.
  2. Exclua o código padrão e adicione o código a seguir ao módulo de código do Module1 :
    Imports System.Data.SqlClientImports Console = System.ConsoleModule Module1    Sub Main()        Dim response As String        Dim myDataSet As New DataSet()        Dim myDataRow As DataRow        Dim newDataSet As DataSet        Dim rowsInError As DataRow()        Dim newTable As DataTable        Dim newCol As DataColumn        Dim i As Integer        Dim myCn As New SqlConnection()        myCn.ConnectionString = "Server=mySQLServer;User ID=sa;Password=mypassword;" & _                                "Initial Catalog=Northwind;"        Dim myDACust As New SqlDataAdapter("Select * From Customers", myCn)        Dim myCmdBlder As New SqlCommandBuilder(myDACust)        myCn.Open()        myDACust.MissingSchemaAction = MissingSchemaAction.AddWithKey        myDACust.Fill(myDataSet, "Customers")        myDataSet.Tables("Customers").Rows(0).Delete()        Dim delRow As DataRow        If myDataSet.HasChanges(DataRowState.Deleted) Then            newDataSet = myDataSet.GetChanges(DataRowState.Deleted)            If (Not newDataSet.HasErrors) Then                delRow = newDataSet.Tables("Customers").Rows(0)		' The following line generates the exception:		Console.WriteLine(delRow(0))				' To resolve this problem, comment the previous line,		' and uncomment the following line.		' Console.WriteLine(delRow(0, DataRowVersion.Original))              End If        End If        If myCn.State = ConnectionState.Open Then            myCn.Close()        End If        myCn = Nothing        Console.WriteLine("Update was processed successfully!")        Console.ReadLine()    End SubEnd Module					
  3. Modificar os parâmetros da propriedade ConnectionString do objeto SqlConnection conforme apropriado para seu ambiente.
  4. No Microsoft Visual Studio .NET Integrated Development Environment (IDE), no menu Debug , clique em Executar Without Debugging para executar o código. Uma janela de console exibe a mensagem "Update foi processada com êxito!" se o Visual Studio não encontrar erros.
  5. Pressione qualquer tecla para fechar a janela Console e interromper o aplicativo.
back to the top
Referências
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
172375Como desfazer atualizações para uma única linha com CancelBatch
Para obter mais informações, consulte o tópico "Estados de linha e versões de linha" e outros tópicos no Microsoft .NET Framework documentação.

back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 310370 - Última Revisão: 06/29/2004 23:20:44 - Revisão: 3.2

Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbconsole kbhowtomaster kbsqlclient kbsystemdata KB310370 KbMtpt
Comentários