• Viernes 19 de Abril de 2024, 13:03

Autor Tema:  Problema Con Datareader  (Leído 2201 veces)

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Problema Con Datareader
« en: Martes 27 de Marzo de 2007, 16:22 »
0
Buenas,

mi problema es el siguiente:

Estoy realizando una exportación a excel mediante vb.net...
Mediante una query extraigo n registros y los paso a un xls.. tan simple como eso..
Mi problema es que cuando utilizo el

while(dr.read())   ' dr = datareader
   exportar_xls...
end while

y hago una exportacion sobre el cliente 'pepe', la primera vez me exporta 20 registros(cuando deberian ser 37), hago la misma exportacion y me exporta 12, hago la misma y me exporta 12... hago la misma y me exporta 20 o tal vez los 37...
Es la misma consulta obviamente con los mismos parametros....
Pienso que es un problema del método READ() por que si a modifico la query para sacar un contador de los registros totales del cliente pepe (select count(*) bla bla) me da 37, osea la cantidad correctas de registros para el cliente 'pepe'...

Disculpen sino se entiende demasiado me cuesta expresarme con este problema ya que después de un rato no logro entender que puede ser...
la query esta bien, eso estoy seguro...

Desde ya muchas gracias.
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #1 en: Martes 27 de Marzo de 2007, 16:23 »
0
Por favor no me digan "proba con un dataset", por que me gustaría comprender cuál es el problema.

gracias!
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #2 en: Lunes 9 de Abril de 2007, 18:24 »
0
dejo un vid, para ilustrar mi problema..
el resultado que debería darme siempre es 116...

rapidshare.com/files/25114657/DataReader.rar.html
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #3 en: Lunes 9 de Abril de 2007, 19:38 »
0
¿Seguro que es el data reader?

Es mejor agregar varios "Console.WriteLine();" para ir escribiendo a manera de log todas las operaciones paso a paso para saber lo que esta pasando, especialmente si por alguna razón no es cómodo utilizar el debug. Si tu aplicación no está en modo consola ejecuta a la aplicación de esta forma: "miaplicacion.exe > log.txt" para que todo lo que pusiste en los Console.Write sea escrito en el archivo de texto.

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #4 en: Jueves 19 de Abril de 2007, 15:55 »
0
Si el datareader o el dataset, sea cualquiera que use el resultado es el mismo.. una terrible inestabilidad de los datos traidos..

intente hacerlo mediante un stored procedure y paso lo mismo... ya no se que puede ser.. nunca me habia pasado esto...
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #5 en: Jueves 19 de Abril de 2007, 17:17 »
0
Cita de: "yaG"
Si el datareader o el dataset, sea cualquiera que use el resultado es el mismo.. una terrible inestabilidad de los datos traidos..

intente hacerlo mediante un stored procedure y paso lo mismo... ya no se que puede ser.. nunca me habia pasado esto...
haz probado mostrarlos los datos directamente en C# ??sin enviarlo todavia a excel.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #6 en: Jueves 19 de Abril de 2007, 19:08 »
0
sisi, comente toda la exportación a excel e hice
un

puse un contador adentro de un cliclo ( while(dr.read()) ) y al salir lo muestro por pantalla.

Creo que ya probe de todo y nada :/
Podrá ser un problema de conectividad ?
Utilizo OLEDB para conectarme a Sybase 15
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #7 en: Jueves 19 de Abril de 2007, 20:02 »
0
Citar
Podrá ser un problema de conectividad ?
Conectividad con quien ???

Si mostrando la cantidad de registros en c# te da la verdadera y mostrando los datos por ejemplo con c# te muestra los correctos, entonces supongo que esta mal o te falta algo en la exportacion a excel o algo por el estilo.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

yaG

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Problema Con Datareader
« Respuesta #8 en: Lunes 23 de Abril de 2007, 17:13 »
0
Me volvió a pasar con otro programa...
más fácil aún en este caso...
Lo único que tengo que hacer es cargar un listview con el id_cliente y nombre de la tabla CLIENTES.
Este script se encuentra en el evento Load de un formulario de busqueda, y también me da resultados distintos cada vez que lo invoco...

Dejo el código;

private string cnnStr="Provider=ASEOLEDB;Data Source=MISERVER;Catalog=MIBASE;User Id=MISUARIO;Password=MIPASS;";


//seteo conexión y datos a buscar
Sybase.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(cnnStr);

Sybase.OleDbCommand comm = new System.Data.OleDb.OleDbCommand();

Sybase.OleDbDataReader dr;

string sQuery = "SELECT id_cliente, nombre FROM cliente where nombre is not null and nombre <> '' ORDER BY nombre";

comm.Connection = conn;
comm.CommandText = sQuery;
comm.CommandType = CommandType.Text;

conn.Open();
dr=comm.ExecuteReader();


//seteo el listview
lstClientes.Columns.Add("Id",50, HorizontalAlignment.Left);
lstClientes.Columns.Add("Nombre",251);


// lleno el listview con los clientes
int ix = 0;
while (dr.Read())
{
lstClientes.Items.Add(dr[0].ToString().Trim());
lstClientes.Items[ix].SubItems.Add(dr[1].ToString().Trim());
ix++;
}
MessageBox.Show(ix.ToString());

dr.Close();
comm.Dispose();
conn.Close();
[size=109]Antes de preguntar recuerda el concepto GIYF. Google is your friend.[/size][/u]