Como moverme por un Datatable

12/02/2004 - 17:16 por Ambros | Informe spam
Hola a todos

Tengo un problemilla que creo me podréis solucionar.

Ataco a una tabla de SQL Server en un programa C# usando un dataset,
dataadapter y una datatable de la sgte forma:


string auxSQL = "SELECT * from TB_PREVISION WHERE PRODUCT_ID= " +
dblProductoOriginal.ToString ();

System.Data.DataSet auxDataSet = new System.Data.DataSet ();

System.Data.SqlClient.SqlDataAdapter auxDataAdapter = new
System.Data.SqlClient.SqlDataAdapter (new System.Data.SqlClient.SqlCommand
(auxSQL, this.ConexionSQL ));

System.Data.SqlClient.SqlCommandBuilder auxCommand = new
System.Data.SqlClient.SqlCommandBuilder (auxDataAdapter);

auxDataAdapter.FillSchema (auxDataSet,System.Data.SchemaType.Source );

System.Data.DataTable auxDataTable = new System.Data.DataTable ();

auxDataTable = auxDataSet.Tables ["Table"];

auxDataTable.TableName = "TB_PREVISION";



Mi pregunta es: ¿Como me puedo mover por los registros de este datatable? Me
refiero a algo parecido a MoveNext del ADO 2.x

Esto de moverme por los registros lo he hecho con un Datareader pero no es
actualizable, y querría, ya que estoy en una fila determinada, poder
actualizar un campo

¿Me podeis ayudar?

Preguntas similare

Leer las respuestas

#1 A.Poblacion
12/02/2004 - 20:56 | Informe spam
"Ambros" wrote in message
news:
Mi pregunta es: ¿Como me puedo mover por los registros de este datatable?


Me
refiero a algo parecido a MoveNext del ADO 2.x



El datatable es como un array en memoria. Por ejemplo:

for (int i=0; i<auxDataTable.Rows.Count; i++)
{
DataRow dr = auxDataTable.Rows[i];
string primeraColumna = (string)dr[0]:
int segundaColumna = (int)dr[1];
}
Respuesta Responder a este mensaje
#2 Rodrigo Corral González [MVP]
12/02/2004 - 22:26 | Informe spam
A mí personalmente, me gusta mas el for each:

for each (DataRow dr in auxDataTable.Rows)
{
string primeraColumna = (string)dr[0]:
int segundaColumna = (int)dr[1];
}


Un saludo
Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#3 Ambros
13/02/2004 - 08:41 | Informe spam
Ayer noche le estuve dando vueltas y al final utilicé el foreach por la
colleccion de Datarows.

Muchas gracias por vuestra ayuda, así tb. puedo comprobar que he elegido una
buena solución.


"Rodrigo Corral González [MVP]" escribió en el
mensaje news:
A mí personalmente, me gusta mas el for each:

for each (DataRow dr in auxDataTable.Rows)
{
string primeraColumna = (string)dr[0]:
int segundaColumna = (int)dr[1];
}


Un saludo
Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net


Respuesta Responder a este mensaje
#4 mente
13/02/2004 - 09:19 | Informe spam
A parte del foreach para recorrer todos los rows te puede interesar tambien
crear una clave principal para la tabla lo que te permitira buscar
directamente el registro deseado.

Para crear la clave:

System.Data.DataColumn c1 dataTable.Columns["Nombre_Campo]";
dataTable.PrimaryKey=new System.Data.DataColumn[]{c1};

Para buscar registros:

DataRow dr=dataTable.Rows.Find("Clave_Deseada");

lo que te devolverá la fila que contiene los valores de clave principal
especificados.

Espero que te ayude.



"Ambros" escribió en el mensaje
news:

Hola a todos

Tengo un problemilla que creo me podréis solucionar.

Ataco a una tabla de SQL Server en un programa C# usando un dataset,
dataadapter y una datatable de la sgte forma:


string auxSQL = "SELECT * from TB_PREVISION WHERE PRODUCT_ID= " +
dblProductoOriginal.ToString ();

System.Data.DataSet auxDataSet = new System.Data.DataSet ();

System.Data.SqlClient.SqlDataAdapter auxDataAdapter = new
System.Data.SqlClient.SqlDataAdapter (new System.Data.SqlClient.SqlCommand
(auxSQL, this.ConexionSQL ));

System.Data.SqlClient.SqlCommandBuilder auxCommand = new
System.Data.SqlClient.SqlCommandBuilder (auxDataAdapter);

auxDataAdapter.FillSchema (auxDataSet,System.Data.SchemaType.Source );

System.Data.DataTable auxDataTable = new System.Data.DataTable ();

auxDataTable = auxDataSet.Tables ["Table"];

auxDataTable.TableName = "TB_PREVISION";



Mi pregunta es: ¿Como me puedo mover por los registros de este datatable?


Me
refiero a algo parecido a MoveNext del ADO 2.x

Esto de moverme por los registros lo he hecho con un Datareader pero no es
actualizable, y querría, ya que estoy en una fila determinada, poder
actualizar un campo

¿Me podeis ayudar?


Respuesta Responder a este mensaje
#5 A.Poblacion
13/02/2004 - 16:02 | Informe spam
"Rodrigo Corral González [MVP]" dijo:
A mí personalmente, me gusta mas el for each:



A mi también me gusta más el foreach, pero la pregunta original
mencionaba los métodos Move del Recordset de ADO, y el foreach sólo es capaz
de emular el MoveNext, pero no el resto de los movimientos, mientras que
accediendo al indexador de Rows sí que puedes avanzar y retroceder sobre el
DataSet.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida