Error al contar las filas de un dataset

24/06/2005 - 10:34 por EAmez | Informe spam
Hola a todos,

Me esta pasando algo incomprensible, a ver si alguien de por aqui me
explica porqué. Tengo una aplicacion web que tira de una serie de
clases de negocio. Una de mis clases de negocio tiene una variable de
tipo DataSet que al llamar al constructor se inicializa con la
estructura de una tabla de la base de datos. Hasta ahi no hay
problemas. El caso es que en un punto de la pagina web, instancio esa
clase de negocio y compruebo lo siguiente:

if(_dataset.Tables[UnaClase.NOMBRE_TABLA].Rows.Count != 0)...

donde UnaClase es, como su nombre indica, una clase que utilizo para
almacenar constantes de la base de datos.

Resulta que al comprobar esta condicion me salta el siguiente error:
There is no row at position 0.
Exception Details: System.IndexOutOfRangeException: There is no row at
position 0.

Juraria que he estado usando esta expresion sin problemas para
comprobar si una tabla de un dataset esta vacia o no, y me ha
funcionado correctamente. Para mas informacion, cuando se evalua la
expresion el dataset esta vacio.

Por cierto, si en tiempo de depuracion compruebo el valor de la
expresion me sale como resultado 0, no un error.

¿Que puedo usar para comprobar si la tabla esta vacia o no sin tener
que usar un try/catch?

Un saludo y gracias,
K

Preguntas similare

Leer las respuestas

#1 Jose S.
24/06/2005 - 16:43 | Informe spam
if (DataSet.Tables[Tabla]== null)



"EAmez" escribió en el mensaje
news:
Hola a todos,

Me esta pasando algo incomprensible, a ver si alguien de por aqui me
explica porqué. Tengo una aplicacion web que tira de una serie de
clases de negocio. Una de mis clases de negocio tiene una variable de
tipo DataSet que al llamar al constructor se inicializa con la
estructura de una tabla de la base de datos. Hasta ahi no hay
problemas. El caso es que en un punto de la pagina web, instancio esa
clase de negocio y compruebo lo siguiente:

if(_dataset.Tables[UnaClase.NOMBRE_TABLA].Rows.Count != 0)...

donde UnaClase es, como su nombre indica, una clase que utilizo para
almacenar constantes de la base de datos.

Resulta que al comprobar esta condicion me salta el siguiente error:
There is no row at position 0.
Exception Details: System.IndexOutOfRangeException: There is no row at
position 0.

Juraria que he estado usando esta expresion sin problemas para
comprobar si una tabla de un dataset esta vacia o no, y me ha
funcionado correctamente. Para mas informacion, cuando se evalua la
expresion el dataset esta vacio.

Por cierto, si en tiempo de depuracion compruebo el valor de la
expresion me sale como resultado 0, no un error.

¿Que puedo usar para comprobar si la tabla esta vacia o no sin tener
que usar un try/catch?

Un saludo y gracias,
K
Respuesta Responder a este mensaje
#2 Carlos Enrique Figueroa
25/06/2005 - 00:49 | Informe spam
Hola,

Solo puedes hacer esa comparación if (dataset.Tables[x].Rows[x].Count != 0)
cuando el dataset no es nulo. Cuando el dataset es nulo recibirás el error
que indicaste "There is no row at position 0".

así que la pregunta que tienes que hacer es si el dataset es o no nulo.

Carlos Enrique Figueroa
MCP, MCAD.NET
.NET Consultant
SmartWork S.A.

"EAmez" escribió:

Hola a todos,

Me esta pasando algo incomprensible, a ver si alguien de por aqui me
explica porqué. Tengo una aplicacion web que tira de una serie de
clases de negocio. Una de mis clases de negocio tiene una variable de
tipo DataSet que al llamar al constructor se inicializa con la
estructura de una tabla de la base de datos. Hasta ahi no hay
problemas. El caso es que en un punto de la pagina web, instancio esa
clase de negocio y compruebo lo siguiente:

if(_dataset.Tables[UnaClase.NOMBRE_TABLA].Rows.Count != 0)...

donde UnaClase es, como su nombre indica, una clase que utilizo para
almacenar constantes de la base de datos.

Resulta que al comprobar esta condicion me salta el siguiente error:
There is no row at position 0.
Exception Details: System.IndexOutOfRangeException: There is no row at
position 0.

Juraria que he estado usando esta expresion sin problemas para
comprobar si una tabla de un dataset esta vacia o no, y me ha
funcionado correctamente. Para mas informacion, cuando se evalua la
expresion el dataset esta vacio.

Por cierto, si en tiempo de depuracion compruebo el valor de la
expresion me sale como resultado 0, no un error.

¿Que puedo usar para comprobar si la tabla esta vacia o no sin tener
que usar un try/catch?

Un saludo y gracias,
K


Respuesta Responder a este mensaje
#3 EAmez
27/06/2005 - 13:06 | Informe spam
Gracias por las respuestas.

Sin ermbargo no puedo preguntar si la tabla es nula porque la tabla
existe. La creo yo en una inicializacion del objeto con una estructura
concreta que luego necesito. Asi pues, cuando pregunto por
_dataset.Tables[nom_tabla] == null
me va a dar como resultado que la tabla no es null aunque no tenga
datos. Lo he comprobado en depuracion.

Es mas, utilizando la herramienta de "Ventana de comandos" que
incorpora el VisualStudio analizo en tiempo de ejecucion el contenido
de las variables y me consta que el Rows.Count devuelve un 0 como se
espera cuando la tabla no tiene filas pero existe. Si no tuviera ningun
valor daria otro mensaje. Pero luego al ejecutar si que salta el
mensaje de error.

Esto es lo que no entiendo: que al examinar las variables depurando de
unos valores y luego no salgan esos valores.
Respuesta Responder a este mensaje
#4 Pablo Fébolo
28/06/2005 - 15:31 | Informe spam
Yo depuraría con el viejo estilo, colocá algunos
messagebox para comprobar los distintos estados y/o valores
en los puentos conflictivos, luego ejecutá en modo release, y analizá
los datos que vas exponiendo con los messagebox. Quizas te ayude
a encontrar el error.

Saludos.
Respuesta Responder a este mensaje
#5 EAmez
29/06/2005 - 11:56 | Informe spam
Bueno, una cosa mas.
En otro punto de la aplicacion utilizo la siguiente sentencia:
if (ds.Tables[0].Rows.Count > 0)...

He utilizado esta expresion y me ha funcionado correctamente con el
dataset "ds" con el mismo estado que en la consulta inicial del hilo:
el dataset tiene una tabla creada, con la estructura de columnas
creada, pero sin datos de ningun tipo.

No veo diferencia ente ambos casos y sin embargo uno funciona y el otro
no.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida