Foros del Web » Programación para mayores de 30 ;) » .NET »

Como copiar un datarow en un DataTable

Estas en el tema de Como copiar un datarow en un DataTable en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/11/2006, 09:04
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Pregunta 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?
  #2 (permalink)  
Antiguo 08/11/2006, 14:24
 
Fecha de Ingreso: abril-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:37.