Get Rows devuelve campos vacíos

30/09/2004 - 11:55 por Pablo Taboada | Informe spam
Hola:

Tengo un problema al usar el método GetRows en aplicaciones
asp con base de datos en SQLServer.

Hasta ahora siempre utilicé GetRows para volcar todo el
contenido del recordset en un array y cerrar inmediatamente
la conexión con la BD y después pelearme con el array. Pero
me está ocurriendo algo extraño que no consigo solucionar a
pesar de llevar una semana dándole vueltas. Al hacer una
consulta sobre la base y volcarla en el array con GetRows,
determinadas posiciones del array figuran como vacías a
pesar de que el registro en cuestión tiene datos en esos
campos.

Si recorro la tabla moviéndome por el recordset con los
métodos habituales (MoveNext y demás), aparecen todos los
datos correctamente, pero si hago el volcado con GetRows,
hay algunos campos que, teniendo datos en la tabla,
aparecen como si no tuvieran ningún dato.

Lo peor es que en algunas páginas me funciona
perfectametne, y en otras no.

¿A alguien le ha pasado algo parecido?, ¿alguna sugerencia?

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P. [MVP]
01/10/2004 - 04:33 | Informe spam
Hola Pablo,

Es muy raro lo que te pasa, prueba asignando algunos campos por defecto si
son nulos, como por ejemplo

Select IsNull(Nombre, '') As Nombre, IsNull(Edad, 0) As Edad

¿Es solo en una consulta o en todas?


Saludos,
Jhonny Vargas P.


"Pablo Taboada" escribió en el mensaje
news:1fda01c4a6d3$a8239130$
Hola:

Tengo un problema al usar el método GetRows en aplicaciones
asp con base de datos en SQLServer.

Hasta ahora siempre utilicé GetRows para volcar todo el
contenido del recordset en un array y cerrar inmediatamente
la conexión con la BD y después pelearme con el array. Pero
me está ocurriendo algo extraño que no consigo solucionar a
pesar de llevar una semana dándole vueltas. Al hacer una
consulta sobre la base y volcarla en el array con GetRows,
determinadas posiciones del array figuran como vacías a
pesar de que el registro en cuestión tiene datos en esos
campos.

Si recorro la tabla moviéndome por el recordset con los
métodos habituales (MoveNext y demás), aparecen todos los
datos correctamente, pero si hago el volcado con GetRows,
hay algunos campos que, teniendo datos en la tabla,
aparecen como si no tuvieran ningún dato.

Lo peor es que en algunas páginas me funciona
perfectametne, y en otras no.

¿A alguien le ha pasado algo parecido?, ¿alguna sugerencia?
Respuesta Responder a este mensaje
#2 Pablo Taboada
01/10/2004 - 10:38 | Informe spam
Y tanto que es raro. Ya te digo que llevo muchos días
peleándome y no consigo saber qué falla.

He probado lo que me comentas, pero el resultado es el
mismo. Para hacer pruebas he creado una página que se
limita a tomar una consulta y crear el recordset para
después mostrarlo de tres formas distintas: recorriendo el
recordset de la forma "tradicional", pasando los datos a un
vector con GetRows y pasando los datos a un String con
GetString. Con el primer método me aparecen correctametne
todos los datos de todos los campos, pero con los otros dos
métodos siempre me deja campos vacíos.

Me pasa esto con todas las consultas que haga sobre una
tabla concreta de la base, no con el resto. La única
particularidad de la tabla respecto a otras es que esta
tiene muchos campos (35 en total), pero para hacer la
consulta sólo tomo unos cuantos, y siempre son los mismos
los que me aparecen como vacíos. No encuentro nada en esos
campos que los diferencie del resto. ¿alguna idea?

gracias por tu respuesta y saludos
Pablo Taboada


Hola Pablo,

Es muy raro lo que te pasa, prueba asignando algunos


campos por defecto si
son nulos, como por ejemplo

Select IsNull(Nombre, '') As Nombre, IsNull(Edad, 0) As


Edad

¿Es solo en una consulta o en todas?


Saludos,
Jhonny Vargas P.


Respuesta Responder a este mensaje
#3 Pablo Taboada
01/10/2004 - 11:39 | Informe spam
Por fin !!!!!!!!

Después de muchas vueltas encontré el problema. Resulta que
estaba un cursor para el recordset que no era el adecuado.
Tenía la propiedad CursorType del Recordset establecida con
el valor "0", y esto era lo que me estaba generando el
problema, pero aún no tengo claro por qué. Si establezco el
cursor como Estático o Dinámico ya no me da problemas.

Lo que no me queda claro es por qué el cursor establecido a
0 me da problemas con deteminados campos de cada registro,
y no con el movimiento entre registros. Tenía idea de que
el cursor controlaba el movimiento entre registros. Si
alguien me pudiera explicar (o decir dónde buscar
información al respecto) algo de esto, se lo agradecería.

Muchas gracias, Jhonny, por tu respuesta.

Saludos
Pablo Taboada


Y tanto que es raro. Ya te digo que llevo muchos días
peleándome y no consigo saber qué falla.

He probado lo que me comentas, pero el resultado es el
mismo. Para hacer pruebas he creado una página que se
limita a tomar una consulta y crear el recordset para
después mostrarlo de tres formas distintas: recorriendo el
recordset de la forma "tradicional", pasando los datos a un
vector con GetRows y pasando los datos a un String con
GetString. Con el primer método me aparecen correctametne
todos los datos de todos los campos, pero con los otros dos
métodos siempre me deja campos vacíos.

Me pasa esto con todas las consultas que haga sobre una
tabla concreta de la base, no con el resto. La única
particularidad de la tabla respecto a otras es que esta
tiene muchos campos (35 en total), pero para hacer la
consulta sólo tomo unos cuantos, y siempre son los mismos
los que me aparecen como vacíos. No encuentro nada en esos
campos que los diferencie del resto. ¿alguna idea?

gracias por tu respuesta y saludos
Pablo Taboada


Hola Pablo,

Es muy raro lo que te pasa, prueba asignando algunos


campos por defecto si
son nulos, como por ejemplo

Select IsNull(Nombre, '') As Nombre, IsNull(Edad, 0) As


Edad

¿Es solo en una consulta o en todas?


Saludos,
Jhonny Vargas P.





.

Respuesta Responder a este mensaje
#4 Jhonny Vargas P. [MVP]
01/10/2004 - 16:58 | Informe spam
Hola Pablo,

No hize nada!!!!:... jejeje..

Que bueno que hayas solucionado el problema y la gentileza de decirnos lo
que te pasaba y la solución.

Saludos,
Jhonny Vargas P.


"Pablo Taboada" escribió en el mensaje
news:065401c4a79a$98b530b0$
Por fin !!!!!!!!

Después de muchas vueltas encontré el problema. Resulta que
estaba un cursor para el recordset que no era el adecuado.
Tenía la propiedad CursorType del Recordset establecida con
el valor "0", y esto era lo que me estaba generando el
problema, pero aún no tengo claro por qué. Si establezco el
cursor como Estático o Dinámico ya no me da problemas.

Lo que no me queda claro es por qué el cursor establecido a
0 me da problemas con deteminados campos de cada registro,
y no con el movimiento entre registros. Tenía idea de que
el cursor controlaba el movimiento entre registros. Si
alguien me pudiera explicar (o decir dónde buscar
información al respecto) algo de esto, se lo agradecería.

Muchas gracias, Jhonny, por tu respuesta.

Saludos
Pablo Taboada


Y tanto que es raro. Ya te digo que llevo muchos días
peleándome y no consigo saber qué falla.

He probado lo que me comentas, pero el resultado es el
mismo. Para hacer pruebas he creado una página que se
limita a tomar una consulta y crear el recordset para
después mostrarlo de tres formas distintas: recorriendo el
recordset de la forma "tradicional", pasando los datos a un
vector con GetRows y pasando los datos a un String con
GetString. Con el primer método me aparecen correctametne
todos los datos de todos los campos, pero con los otros dos
métodos siempre me deja campos vacíos.

Me pasa esto con todas las consultas que haga sobre una
tabla concreta de la base, no con el resto. La única
particularidad de la tabla respecto a otras es que esta
tiene muchos campos (35 en total), pero para hacer la
consulta sólo tomo unos cuantos, y siempre son los mismos
los que me aparecen como vacíos. No encuentro nada en esos
campos que los diferencie del resto. ¿alguna idea?

gracias por tu respuesta y saludos
Pablo Taboada


Hola Pablo,

Es muy raro lo que te pasa, prueba asignando algunos


campos por defecto si
son nulos, como por ejemplo

Select IsNull(Nombre, '') As Nombre, IsNull(Edad, 0) As


Edad

¿Es solo en una consulta o en todas?


Saludos,
Jhonny Vargas P.





.

Respuesta Responder a este mensaje
#5 Sashka
02/10/2004 - 08:10 | Informe spam
Pues eso si que me extraña... se supone que por defecto es 0
(adOpenForwardOnly)... es decir que ni siquiera deberías decirselo!! (no
estarás dandole CursorLocation en el server???)
Por otro lado usar getrows con cursores estáticos o dinámicos es un
desperdicio de recursos... tampoco te funciona con keyset??
Dale una mirada a éste artículo (y algunos otros mediante sus links)

http://www.learnasp.com/learn/dbcount.asp

Sashka
MS MVP Access
MCP ASP.Net

"Pablo Taboada" escribió en el mensaje
news:065401c4a79a$98b530b0$
Por fin !!!!!!!!

Después de muchas vueltas encontré el problema. Resulta que
estaba un cursor para el recordset que no era el adecuado.
Tenía la propiedad CursorType del Recordset establecida con
el valor "0", y esto era lo que me estaba generando el
problema, pero aún no tengo claro por qué. Si establezco el
cursor como Estático o Dinámico ya no me da problemas.

Lo que no me queda claro es por qué el cursor establecido a
0 me da problemas con deteminados campos de cada registro,
y no con el movimiento entre registros. Tenía idea de que
el cursor controlaba el movimiento entre registros. Si
alguien me pudiera explicar (o decir dónde buscar
información al respecto) algo de esto, se lo agradecería.

Muchas gracias, Jhonny, por tu respuesta.

Saludos
Pablo Taboada


Y tanto que es raro. Ya te digo que llevo muchos días
peleándome y no consigo saber qué falla.

He probado lo que me comentas, pero el resultado es el
mismo. Para hacer pruebas he creado una página que se
limita a tomar una consulta y crear el recordset para
después mostrarlo de tres formas distintas: recorriendo el
recordset de la forma "tradicional", pasando los datos a un
vector con GetRows y pasando los datos a un String con
GetString. Con el primer método me aparecen correctametne
todos los datos de todos los campos, pero con los otros dos
métodos siempre me deja campos vacíos.

Me pasa esto con todas las consultas que haga sobre una
tabla concreta de la base, no con el resto. La única
particularidad de la tabla respecto a otras es que esta
tiene muchos campos (35 en total), pero para hacer la
consulta sólo tomo unos cuantos, y siempre son los mismos
los que me aparecen como vacíos. No encuentro nada en esos
campos que los diferencie del resto. ¿alguna idea?

gracias por tu respuesta y saludos
Pablo Taboada


Hola Pablo,

Es muy raro lo que te pasa, prueba asignando algunos


campos por defecto si
son nulos, como por ejemplo

Select IsNull(Nombre, '') As Nombre, IsNull(Edad, 0) As


Edad

¿Es solo en una consulta o en todas?


Saludos,
Jhonny Vargas P.





.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida