 Copiando 
dados entre Tabelas em um DataSet
          
 Copiando 
dados entre Tabelas em um DataSet
Neste artigo vou mostrar como copiar dados (objetos DataRow) entre duas tabelas em um objeto DataSet usando os métodos Clone e ImportRow do objeto DataTable.
Antes de usar o método ImportRow , para copiar os dados da tabela fonte para a tabela destino , você precisa ter certeza de que a tabela destino tenha a mesma estrutura da tabela fonte. O método Clone da classe DataTable copia a estrutura de uma tabela , incluindo esquemas , relacionamentos , etc. e retorna um novo DataTable com a mesma estrutura da tabela fonte.
Como exemplo vou mostrar como copiar 5 linhas da tabela Produtos do banco de dados Northwind.mdb usando o método ImportRow.
a - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
No formulário padrão insira dois controles ListBox : ListBox1 e ListBox2 , dois controles Label e um botão de comando : Button1. Veja o formulário abaixo:

No evento Click do botão de comando Button insira o código abaixo :
| PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim ds As DataSet = New DataSet() Dim tblProdutos As DataTable Dim tblProdutosCopia As DataTable Dim tblProdutosContador As Integer Dim tblProdutosCopiaContador As Integer Dim i As Integer Dim strSql As String 
 'define a string de conexão com o banco de dados Northwind.mdb e define o comando Select Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\Northwind.mdb" Dim cn As OleDbConnection = New OleDbConnection(strConnection) strSql = " Select * from produtos" Dim da As OleDbDataAdapter = New OleDbDataAdapter(strSql, cn) cn.Open() 
 da.Fill(ds, "Produtos") 
 'define o DataTable e o número de linhas da tabela tblProdutos = ds.Tables("Produtos") tblProdutosContador = tblProdutos.Rows.Count 
 ' Exibe o número de linhas no ListBox1 ListBox1.Items.Add("A tabela Produtos tem " & tblProdutosContador.ToString & " linhas ") 
 ' exibe as primeiras cinco linhas da tabela Produtos For i = 0 To 4 ListBox1.Items.Add(" linha (" & i.ToString & ") = " & tblProdutos.Rows(i)(1)) Next 
 ' copia a estrutura da tabela Produtos tblProdutosCopia = tblProdutos.Clone ' Usando o método ImporRow copia as primeiras cinco linhas da tabela Produtos For i = 0 To 4 tblProdutosCopia.ImportRow(tblProdutos.Rows(i)) Next 
 'obtem o número de linhas da tabela Copia tblProdutosCopiaContador = tblProdutosCopia.Rows.Count ListBox2.Items.Add("A tabela Cópia de Produtos tem " & tblProdutosCopiaContador.ToString & " linhas ") 
 'Exibe no ListBox2 as 5 linhas copiadas For i = 0 To tblProdutosCopiaContador - 1 ListBox2.Items.Add(" linha (" & i.ToString & ") = " & tblProdutosCopia.Rows(i)(1)) Next End Sub | 
Após executar o projeto o resultado será exibido conforme tela abaixo :

Para copiar a tabela inteira podemos usar o método Copy do objeto DataTable. No nosso exemplo basta substituir o método ImportRow pelo método Copy conforme abaixo :
| For i = 0 To 4 tblProdutosCopia.ImportRow(tblProdutos.Rows(i)) Next | Cópia a tabela inteira: tblProdutosCopia = tblProdutos.Copy 
 | 
| Substituindo o código da esquerda pelo da direita teremos todas as linhas da tabela copiada. | |
Até 
mais ver  em um novo artigo sobre VB.NET.

José Carlos Macoratti