Usuario
Datatable.select Columna no encontrada

Pregunta
-
Buen día
Me podrían ayudar por favor, necesito filtrar un DataTable que contiene datos de una consulta realizada previamente, solo que esta consulta contiene muchos registros, necesito solo los regitros que coincidan con un string donde guardo información ej.(esto es ejemplo son muchos datos mas)
datatable d3
datatable e4
en d3 tengo ORDEN, NOMBRE, TELEFONO EMAIL
en e4 tengo ORDEN, AUTO, COLOR, PLACAS
Entonces mi código es el siguiente
Try Escribirb1(strStreamWriter, b1) Dim dr As DataRow For Each dr In d3.Rows For j As Integer = 0 To d3.Columns.Count - 2 Dim orden As String = dr.Item(0).ToString If j = d3.Columns.Count - 2 Then strStreamWriter.WriteLine(dr.Item(j).ToString) Dim rows() As DataRow = e4.Select("Orden = " + orden) 'AQUI TENGO EL ERROR If rows.Length <> 0 Then For Each row As DataRow In rows Next End If Else strStreamWriter.Write(dr.Item(j).ToString) strStreamWriter.Write("|") End If Next Next Catch ex As Exception MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information) strStreamWriter.Close()
Me dice que no encuentra la columna que tiene "orden"
lo que requiero es que cuando termine de escribir lo que tiene en D3, siga con E4 un renglon abajo pero solo con la información que es igual a la orden en D3, por eso quiero filtrar la informacion de E4 para solo recorrer lo que coincida con la orden y poderlo vaciar en un txt
No se si me explique bien, espero me puedan ayudar.
Gracias
Chinoafro
Todas las respuestas
-
Hola chinoafro
Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comparto a continuación el siguiente enlace
Gracias por usar los foros de MSDN.
Pablo Rubio
____
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
- Editado Pablo Rubio martes, 22 de octubre de 2019 21:06
-
Hola, no se sientiendo bien tu requerimiento pero te muestro un ejemplo y me dices si es esto lo que buscas ej:
Private Sub Button26_Click(sender As Object, e As EventArgs) Handles Button26.Click Dim D3 As New DataTable() Dim E4 As New DataTable() E4.Columns.Add("ORDEN", Type.GetType("System.String")) E4.Columns.Add("AUTO", Type.GetType("System.String")) E4.Columns.Add("COLOR", Type.GetType("System.String")) E4.Columns.Add("PLACAS", Type.GetType("System.String")) D3.Columns.Add("ORDEN", Type.GetType("System.String")) D3.Columns.Add("NOMBRE", Type.GetType("System.String")) D3.Columns.Add("TELEFONO", Type.GetType("System.String")) Dim a As Integer = 0 For i As Integer = 0 To 100 Dim row As DataRow = E4.NewRow row.ItemArray = ({"uno" & a, "dos", "tres", "Cuatro"}) E4.Rows.Add(row) a += 1 Next a = 0 For i As Integer = 0 To 100 If a = 5 Then a = 0 Dim row As DataRow = D3.NewRow row.ItemArray = ({"uno" & a, "Cinco", "Seis"}) D3.Rows.Add(row) a += 1 Next Dim Buscar As String = TextBox1.Text Dim Resultado As String = "" For Each row As DataRow In E4.Rows If Buscar = row(0) Then Resultado += "ORDEN DE E4: " & row(0) & Environment.NewLine For Each row2 As DataRow In D3.Rows If row2(0) = row(0) Then Resultado += "Dato D3: ORDEN " & row2(0) & " NOMBRE: " & row2(1) & " TELÉFONO: " & row2(2) & Environment.NewLine End If Next End If Next MsgBox(Resultado) End Sub
En el ejemplo busca en el TextBox "uno3" y recorre la segunda DataTable
Saludos
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Editado Marcelo PF miércoles, 23 de octubre de 2019 5:59
-
Hola:
¿ Puedes poner la(s) consulta(s) que haces para cargar los 2 datatables ?
¿ Puedes poner la(s) estructura(s) de las tabla(s) implicadas en la(s) consulta(s) ?
Te pido esto porque tiene mucha "pinta" que son tablas relacionadas, si esto es cierto, visualizar los registros de la segunda tabla cada vez que te mueves por los registros de la primera tabla es bastante sencilloUn saludo desde Bilbo
Carlos- Propuesto como respuesta Pablo Rubio miércoles, 23 de octubre de 2019 21:45
-
Muchas gracias por tu respuesta
les comento que ya lo solucione, solo me faltaba agregar los caracteres ( ' ) osea: ("Orden = '" & orden & "'") y listo muchas gracias
ry Escribirb1(strStreamWriter, b1) Dim dr As DataRow For Each dr In d3.Rows For j As Integer = 0 To d3.Columns.Count - 2 Dim orden As String = dr.Item(0).ToString If j = d3.Columns.Count - 2 Then strStreamWriter.WriteLine(dr.Item(j).ToString) Dim rows() As DataRow = e4.Select(""Orden = '" & orden & "'") -- aqui agregue los ' ' If rows.Length <> 0 Then For Each row As DataRow In rows Next End If Else strStreamWriter.Write(dr.Item(j).ToString) strStreamWriter.Write("|") End If Next Next Catch ex As Exception MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information) strStreamWriter.Close()
Chinoafro
- Propuesto como respuesta Pablo Rubio miércoles, 23 de octubre de 2019 21:45