Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Como copiar un datarow en un DataTable (http://www.forosdelweb.com/f29/como-copiar-datarow-datatable-441391/)

Developer9 08/11/2006 09:04

Como copiar un datarow en un DataTable
 
HOla amigos... tengo un problema, necesito añadir un datarrow a un datatable y no me deja, me dice que el datarow ya pertenece a otro datatable :'( Lo que el codigo pretende hacer es filtrar el dataset por cada IdBodega, y todos los datarrows productos del filtro enviarlos a otro DataTable (del dataset dsItemxBodegaFinal) y eliminarlos del DataTable original del dataset (dsItemxBodega)

Mi codigo es este, se me cae en la linea roja

Código:

Dim dsItemxBodegaFinal As New DataSet       
        Dim idbodega As Integer
        Dim arrdr As DataRow()
        Dim i As Integer = 0
        Dim condicion As String

        For Each dr As DataRow In dsItemxBodega.Tables(0).Rows
                Dim dt As DataTable = New DataTable
                condicion = "IdBodega = " + Convert.ToString(dr("IdBodega"))
                arrdr = dsItemxBodega.Tables(0).Select(condicion)
                Dim dr3 As DataRow = dsItemxBodega.Tables(0).NewRow
                For Each dr2 As DataRow In arrdr
                    dt.Rows.Add(dr2)                 
                    dsItemxBodega.Tables(0).Rows.Remove(dr2)
                Next
                dsItemxBodegaFinal.Tables.Add(dt)
                dsItemxBodega.AcceptChanges()
                i = i + 1
            Next

Alguna ayuda? :-)

mcEmmanuel 08/11/2006 14:24

El problema es que un datarow solo puede tener un apuntador a un datatable, si ya esta utilizado entonces no lo puedes agregar a otra tabla,
Pero existe el metodo LoadDataRow e ImportRow del datatable.

Código:

Dim dsItemxBodegaFinal AsNew DataSet
Dim idbodega AsInteger
Dim arrdr As DataRow()
Dim i AsInteger = 0
Dim condicion AsString
Dim dt As DataTable = New DataTable
dt.Columns.Add("IdBodega", GetType(Integer))
dt.Columns.Add("Nombre", GetType(String))
'Tienes que poner las mismas columnas que tu tabla original
 
'No es necesario el ciclo
 
 
 
 
 

'ForEach dr As DataRow In dsItemxBodega.Tables(0).Rows
condicion = "IdBodega= " + Convert.ToString(dr("IdBodega"))
arrdr = dsItemxBodega.Tables(0).Select(condicion)
'Dim dr3 As DataRow = dsItemxBodega.Tables(0).NewRow
'No se utiliza dr3
ForEach dr2 As DataRow In arrdr
dt.LoadDataRow(dr2.ItemArray, True)
'dt.Rows.Add(dr2)
dsItemxBodega.Tables(0).Rows.Remove(dr2)
Next
dsItemxBodegaFinal.Tables.Add(dt)
dsItemxBodega.AcceptChanges()
'i = i + 1 Para que es la i?
'i == dsItemxBodega.Tables(0).Rows.count ??
 
 
 
 

'Next

Saludos!
Emmanuel.
La Paz Baja California Sur.


La zona horaria es GMT -6. Ahora son las 20:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.