Visual Basic.NET - Recorrer dataview

   
Vista:

Recorrer dataview

Publicado por harwy (6 intervenciones) el 21/09/2007 14:20:15
Tengo un problema y espero puedan ayudarme.

A través de procedimientos almacenados, cruzo varias tablas y obtengo información, esta información la proceso a través de código para obtener sólo la información que necesito, la que almaceno en un datatable creado dinámicamente (así se dice?).

Luego necesito mostrar esta información ordenada que lo hago a través de un dataview ordenado. No lo ordeno al momento de crear el datatable xq es imposible ya que saco información primero de una tabla, luego de otra y así voy creando mi datatable.

Ahora viene el problema, luego de mostrar los datos ordenados, q se ve perfecto en un grid enlazado al dataview q ordené... necesito trabajar ahora con estos datos ordenados, no recorro el datatable xq esta desordenado, entonces pensé en recorrer el dataview, pero observo que el orden sigue siendo el original. Existe alguna manera de trabajar con los datos que he ordenado? necesito recorrerlo uno x uno, pero en el orden q me muestra el dataview. He revisado muchos foros y no encuentro respuesta :( Ayudenmeeeee.....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recorrer dataview

Publicado por Harold V. (411 intervenciones) el 21/09/2007 17:00:40
Hola:
Puedes mostrar tu Procedimiento almacenado, y el codigo que no te funciona??, para tener mas claridad y poder ayudarte.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por harwy (6 intervenciones) el 21/09/2007 17:52:10
Hola Harold, gracias por tu rápida respuesta. El problema era que necesitaba trabajar con los datos de un DataTable pero que estaban desordenados, conseguía ordenarlo enlazando mi DataTable con un DataView:

Dim dv As DataView = dt.DefaultView
dv.Sort = cSort 'donde cSort es mi cadena de ordenación.

y lo mostraba en la página a través de un DataGri:

dg.DataSource = dv
dg.DataBind()

hasta ahí perfecto, me mostraba los datos del DataTable ordenados en la página, pero cuando además necesita trabajar con los datos que había ordenado inicialmente con el DataView, para continuar con los requerimientos de mi aplicación que tiene otras opciones q no es necesario explicar, observaba que al recorrer las filas y querer hacer referencia a estos datos «ordenados» recorriendo el DataView me devolvía los datos desordenados.

Bueno al parecer sigue haciendo referencia a los datos de la tabla original, me rompí la cabeza investigando y hay muchas personas q tuvieron el mismo problema, no sé si lo solucionaron, pero sería bueno q si lo hacen lo compartan con los demás, los foros no deberían ser sólo para preguntar, en fin... la solución fue trabajar directamente con el DataTable original y ordenarlo, pensé q no se podía ordenar un DataTable ya q para eso existen las vistas, pero me equivoqué, leyendo un poco descubrí el método SELECT del DataTable, entonces ordeno el DataTable antiguo y creo uno nuevo con los datos ordenados.

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
'Tenía un DataTable original desordenado.
Dim dtOld as DataTable
.......
.......
'Lleno el DataTable con código, con los datos que necesito. Talvez dirán q debería ordenar mi consulta en la consulta con un ORDER BY y listo, pero no es tan simpe, el DataTable que creo no proviene de una sóla consulta, si no que se origina con varios datos de diferentes tablas, estos datos que obtengo con procedimientos almacenados si estan ordenados, pero estos datos q obtengo los proceso, los cruzo, los vuelvo a procesar para armar mi nueva «tabla» con código q definitivamente no explicaré porq resultaría confuso ya q no saben de q se trata mi aplicación, y q por cierto esta información obtenida en mi DataTable no necesito almacenarla en base de datos, porque son muchísimos datos que harían q la base de datos crezca considerablemente sin tener necesidad de almacenar esos datos, por lo q simplemente jalo datos de diferentes tablas, los proceso y los muestro. Me entienden? bueno... ojalá q si.
.......
.......
 
'Luego de obtener mi DataTable original pero desordenado realizo lo siguiente para obtener un DataTable nuevo ordenado.
 
'Declaro un DataRow.
Dim rows As DataRow()
 
'Declaro mi nuevo DataTable q va a contener los datos ordenados.
Dim dtNew As DataTable
 
'Se clona la estructura de la tabla.
dtNew = dtOld.Clone
 
'Ordeno la tabla.
rows = dtOld.Select(cFilter, cSort, DataViewRowState.CurrentRows)
 
'Donde cFilter en la cadena de filtrado, en mi caso es vacía porq quiero todos los datos, y cSort mi cadena de ordenación. Ejm. cSort = "NroFicha ASC"
 
'Declaro mi nuevo DataRow
Dim drNew As DataRow
 
'Copio todos las filas ordenadas en el nuevo DataTable.
For Each drNew  In rows
    dtNew.ImportRow(drNew )
Next


y obtengo un nuevo DataTable ordenado, con el q continúo trabajando.

Gracias, espero q a alguien le sirva.

Harwy.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Recorrer dataview

Publicado por Migdalia (1 intervención) el 27/09/2007 15:06:41
Hola! Muchas gracias por compartir tu código, me sirvió de mucho!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Gracias me sirvio de mucho (1 intervención) el 10/09/2008 23:52:08
Gracias .. me sirvio de mucho ...asi los usuarios pueden ordenar a su gusto ..

Saludos
El Nixo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Javier (1 intervención) el 22/12/2009 18:30:01
Harwy
Gracias por este tip, me fue de gran ayuda, ya que también necesitaba ordenar un datatable para porder trabajar los datos previo a mostralos en un grid.

saludos
Javier.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Antonio (1 intervención) el 07/12/2011 00:42:47
tengo este codigo, que me genera el dataview, pero ahora quiero actulizar mi dataset con los valores ordenados pero no me queda esa parte del codigo.

Dim dv As DataView

dv = DbDataSet.Tables(0).DefaultView

DbDataSet.Tables(0).DefaultView.Sort = "version ASC"

No puedo actulizar mi tabla que pertenece al dataset
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Odcg (2 intervenciones) el 02/02/2013 16:58:32
Tu código está muy bien, me parece una buena idea, pero no seria mejor pasar estos datos ordenados de tu dataview a una tabla nueva

Ejemplo

ya tienes tu dataview ordenado como quieres, entonces solo copialos a una nueva tabla ya ordenados

dim NuevaTabla as new datatable

nuevatabla = midataview.totable

y listo, te evitas muchas cosas

espero mi comentario sirva para algunas personas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Odcg (2 intervenciones) el 02/02/2013 17:48:14
y otra cosa SI SE PUEDE RECORRER UNA VISTA ORDENADA

For Each fila As DataRowView In Midataview

para acceder a las columnas

fila.item("micolumna")

var = fila.item("micolumna")

ó si van a agregar algun valor a la columna

fila.item("micolumna") = valor

next

recuerden que cuando crean la vista le dicen que si esa vista va a actualizar la tabla origen o si va a agregar registros a la tabla origen o si va a aeliminar registros de la tabla origen

así, cualquier cambio que hagamos en la vista, se reflejara en la tabla base

COMO CREAR UNA VISTA

se declara primero

1
2
3
4
5
6
7
8
9
dim MiVista as dataview
 
        MiVista = New DataView(MiTabla)
        With MiVista
            .Sort = ("campo1, campo2, campo3 DESC ")
            .AllowNew = True
            .AllowEdit = True
            .AllowDelete = True
        End With


Nota. El método SORT de la vista, ordena la vista como queramos, colocamos el orden de los campos como queremos que los ordene, incluive, podemos ordenar campos numericos de mayor a menor o viceversa campo3 ASC o campo3 DESC

de esta manera cualquier cambio que yo haga en la vista, se verá reflejado en la tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Nerea (1 intervención) el 05/09/2013 11:11:03
Muchas gracias!!! Me ha servido de mucha ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por Rsanchez rsanchez.cantero@gmail.com (1 intervención) el 28/08/2016 06:01:06
Recorran directo el dataView

For Each drRow As DataRowView In dtwDatosOrd

....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por haver (196 intervenciones) el 21/09/2007 17:04:45
Porque no recorres la grilla , el datagridview
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por harwy (6 intervenciones) el 21/09/2007 17:57:50
porque es una aplicación distribuida en 3 capas y no creo q sea conveniente enviar el DataGrid como objeto entre capa y capa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer dataview

Publicado por harwy (6 intervenciones) el 21/09/2007 17:59:23
es buena idea, si funcionaría pero no lo hago x lo q te explico...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar