Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 08-nov-2006, 08:04   #1 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
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?
Developer9 está desconectado   Responder Citando
Antiguo 08-nov-2006, 13:24   #2 (permalink)
mcEmmanuel no se puede cailificar en este momento
 
Fecha de Ingreso: abril-2006
Mensajes: 40
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.
mcEmmanuel está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 04:03.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93