Obtener una Fila de una Tabla en un DataSet

01/06/2006 - 16:48 por Lixus | Informe spam
Os comento una cosa que me pasa.

Intento recuparer una fila de una tabla que hay en un DataSet.
El DataSet lo saco de una variable de sesión, puesto que lo utilizo en
varios formularios a lo largo de la aplicación (es un filtro que me devuelve
pocos registros y que utilizo mientras tengo la sesión abierta), y lo tengo
de la siguiente forma:

INICIO CODIGO

'* Recupero el DataSet y el ID que me interesan
Dim sel_ID As Integer = Session("mi_id")
Dim dsMidataset As DataSet = CType(Session("dataset"), DataSet).Copy

'* Obtenego un DataRow con la fila que me interesa.
dsMidataset .Tables("tblTabla1").DefaultView.Sort = "Id_Tabla1"
Dim intIndex As Integer =
dsMidataset.Tables("tblTabla1").DefaultView.Find(sel_ID)
Dim dRow As DataRow = dsMidataset.Tables("tblTabla1").Rows(intIndex)

// FIN CODIGO

Una vez obtenida la fila, me encuentro con que al sacar los datos que me
interesan

Id_Nombre = dRow("Id_Tabla1")
Nombre = dRow("Nombre")

no se corresponden, esto es, el id_1 no se corresponde con nombre1, el id_2
no se corresponde con nombre2, etc, etc, los campos de ambas columnas se han
colocado de diferente forma.

Supongo que habrá alguna forma de que al hacer la ordenación
(DefaultView.Sort) me ordene todos los campos de la tabla de forma conjunta,
no solamente el índice. O bien debe haber otra forma de obtener la fila cuya
identidad es la que me interesa (sel_ID es la identidad que busco).

Eso por un lado, por otro lado me ocurre otra cosa con la variable de
sesión, que si no pongo ese Copy al final de la linea que carga el DataSet
de la variable de sesión en el que acabo de declarar, cualquier cambio que
haga en el DataSet se refleja en la variable de sesión y en los sucesivos
usos que hago de ella.

Es posible que todo esto sean cosas elementales, pero últimamente me están
trayendo de cabeza.

Gracias por leerme y un saludo
 

Leer las respuestas

#1 Lixus
02/06/2006 - 16:23 | Informe spam
Bueno, pues parece que ahora me funciona bien, os cuento un poco lo que he
cambiado:

Creo que el error estaba en que ordenaba en un DefaultView
[ dsMidataset .Tables("tblTabla1").DefaultView.Sort = "Id_Tabla1" ]

y luego intentaba sacar directamente los datos de la tabla del DataSet
[ Dim dRow As DataRow = dsMidataset.Tables("tblTabla1").Rows(intIndex) ]

y el DataRow debe salir también del DefaultView que es el que se ha
reordenado
[ Dim dRow As DataRow =
dsMidataset.Tables("tblTabla1").DefaultView.Item(intIndex).Row ]

De momento me funciona bien (parece)
Un saludo



"Lixus" escribió en el mensaje
news:
Os comento una cosa que me pasa.

Intento recuparer una fila de una tabla que hay en un DataSet.
El DataSet lo saco de una variable de sesión, puesto que lo utilizo en
varios formularios a lo largo de la aplicación (es un filtro que me
devuelve pocos registros y que utilizo mientras tengo la sesión abierta),
y lo tengo de la siguiente forma:

INICIO CODIGO

'* Recupero el DataSet y el ID que me interesan
Dim sel_ID As Integer = Session("mi_id")
Dim dsMidataset As DataSet = CType(Session("dataset"), DataSet).Copy

'* Obtenego un DataRow con la fila que me interesa.
dsMidataset .Tables("tblTabla1").DefaultView.Sort = "Id_Tabla1"
Dim intIndex As Integer =
dsMidataset.Tables("tblTabla1").DefaultView.Find(sel_ID)
Dim dRow As DataRow = dsMidataset.Tables("tblTabla1").Rows(intIndex)

// FIN CODIGO

Una vez obtenida la fila, me encuentro con que al sacar los datos que me
interesan

Id_Nombre = dRow("Id_Tabla1")
Nombre = dRow("Nombre")

no se corresponden, esto es, el id_1 no se corresponde con nombre1, el
id_2 no se corresponde con nombre2, etc, etc, los campos de ambas columnas
se han colocado de diferente forma.

Supongo que habrá alguna forma de que al hacer la ordenación
(DefaultView.Sort) me ordene todos los campos de la tabla de forma
conjunta, no solamente el índice. O bien debe haber otra forma de obtener
la fila cuya identidad es la que me interesa (sel_ID es la identidad que
busco).

Eso por un lado, por otro lado me ocurre otra cosa con la variable de
sesión, que si no pongo ese Copy al final de la linea que carga el DataSet
de la variable de sesión en el que acabo de declarar, cualquier cambio que
haga en el DataSet se refleja en la variable de sesión y en los sucesivos
usos que hago de ella.

Es posible que todo esto sean cosas elementales, pero últimamente me están
trayendo de cabeza.

Gracias por leerme y un saludo

Preguntas similares