asociar un datareader a un datagrid

23/08/2004 - 17:07 por miguel | Informe spam
Hola deseo que el datasource de un datagrid en visual .net
sea un datareader ya que si es un dataset este tarda
varios segundos en cargarse.

El datagrid está en un formulario de visual basic .net (no
es ASP)
y me da un error indicandome que el datareader no es un
origen de datos iList o iListSource.

Si utilizo dataset no tengo problemas para utilizar
el datagrid , el datareader tambien me funciona
correctamente para interactuar con la base de datos
(select,insert,update,delete) pero no puedo asignarlo
a un datagrid.

Preguntas similare

Leer las respuestas

#1 Cesar Rivera
24/08/2004 - 01:35 | Informe spam
Saludos Miguel,

Si el dataset tarda varios segundos en tardarse es porque estás cargando un
número significativo de registros en memoria. Tu DataAdpater rellena primero
el DataSet obteniendo "todos" los registros de la tabla o tablas que
solicitastes, no es como el DataReader que sólo trae un registro y hasta que
no uses el método Read para traer el siguiente registro, sólo trabajarás con
el registro actual. Un DataReader en este caso no sería solución porque su
función principal es de un sólo recorrido y sin vuelta atrás. El datagrid
está diseñado para asociarse a un DataSet.

Aunque intentando llenar un dataset a través de un DataReader sería una
posible solución para luego asignarlo al datagrid, en realidad no lo es. El
método Fill del DataAdapter resulta más eficiente en este caso.

Me corrigen si estoy equivocado. :) Aqui estamos para aprender todos.


"miguel" wrote:

Hola deseo que el datasource de un datagrid en visual .net
sea un datareader ya que si es un dataset este tarda
varios segundos en cargarse.

El datagrid está en un formulario de visual basic .net (no
es ASP)
y me da un error indicandome que el datareader no es un
origen de datos iList o iListSource.

Si utilizo dataset no tengo problemas para utilizar
el datagrid , el datareader tambien me funciona
correctamente para interactuar con la base de datos
(select,insert,update,delete) pero no puedo asignarlo
a un datagrid.



Respuesta Responder a este mensaje
#2 Angel. E. Ruiz. Pastor
24/08/2004 - 02:47 | Informe spam
Amigo EL DataReader solo muestra un registro a la vez. por ende no tiene
logica mostrar los datos en un datagrid esos datos los puedes mostrar en
textbxo. si desea mostrar varios registros el DataSource del tabla gris
puede ser un DataSet un Dataview para Mostar varios registros a la vez






Saludos cordiales,
Ángel Ruiz
[MS Visual Basic Developer MVP]
Caracas - Venezuela

"El conocimiento es un bien, que crece a medida que se comparte"

"miguel" wrote in message
news:ba1f01c48922$de5ff320$
Hola deseo que el datasource de un datagrid en visual .net
sea un datareader ya que si es un dataset este tarda
varios segundos en cargarse.

El datagrid está en un formulario de visual basic .net (no
es ASP)
y me da un error indicandome que el datareader no es un
origen de datos iList o iListSource.

Si utilizo dataset no tengo problemas para utilizar
el datagrid , el datareader tambien me funciona
correctamente para interactuar con la base de datos
(select,insert,update,delete) pero no puedo asignarlo
a un datagrid.
Respuesta Responder a este mensaje
#3 miguel
24/08/2004 - 09:44 | Informe spam
Primero gracias por contestarme pero hay algo en lo que me
pierdo, ado .net puede trabajar en dos modos conectado y
desconectado, desconectado sería con un dataset y
dataadapter y conectado que es como quiero trabajar es
utilizando ExecuteReader (select) o executeNonQuery
(insert,delete) bien yo quiero utilizar ExecuteReader, ya
se que el datareader a través del método read iré
recuperando de uno a uno los registros , pero he visto
ejemplos en los que dicen exactamente esta frase:

Un datareader también lo podemos asignar a un método
Datasource de un control web form de la siguiente forma:

Datagrid1.datasource = oCommand.ExecuteReader()

En este caso lo enlazan a un datagrid , y yo entiendo
que es como haciamos ahora enlazamos una cosulta sql en
modo conectado a un datagrid.
Respuesta Responder a este mensaje
#4 miguel
24/08/2004 - 17:34 | Informe spam
Lo que realmente queria probar es si mediante el reader
la carga de datos era más rapida pero supongo que no.
He hecho pruebas con tablas más pequeñas (200 registros) y
el tiempo baja sobre un segundo , si es una tabla grade
(32000 registros) es sobre unos 8 0 10 segundos.
Pero lo molesto es el que no se carga el form y después
tarde en cargar el grid por eso quería bajar el tiempo ,
lo he solucionado mediante threads, he creado un thread
que carga el grid después de cargar el formulario así que
si el grid es muy grande mostraré una barra de progreso.
Otra prueba que tenía dudas es si tardaría lo mismo en
cargar desde Oracle que de SQLserver mediante SQLcommand y
tarda exactamente lo mismo en cargar el dataset.
Bien lo que al final saco de conclusión es que en WebForms
(yo no lo puedo probar) si funciona el datareader asignado
a un grid y en winforms no (que tampoco se porqué). Y si
el tiempo de carga es el mismo , cual debe ser la
diferencia ? .Gracias y un saludo
Respuesta Responder a este mensaje
#5 miquel
25/08/2004 - 09:34 | Informe spam
evidentemente hay principios de diseño y yo soy el primero
que no cargo un grid de 30000 registros por gusto, pero
quien paga mis aplicaciones es el usuario y si este me
pide que cuando entre en un formulario quiere ver en el
grid los 30000 equipos que tiene para que le sirva de guia
para despues hacer un filtro en base a las referencias que
empiezan por "XJk00Z" pues yo debo hacerselo, y si quieres
le puedo leer tu mail a ver que me dice. No siempre lo que
los programadores hariamos es lo que el usuario quiere, al
usuario le gusta moverse por el grid como por una hoja de
excel ordenar una columna y despues ir saltando con el
ratón hasta donde más o menos busca y despues en el campo
de filtro introducir algun valor y filtrar el grid, y
después ese grid te queda pues de 100 registros.Tambien
tienes que tener en cuenta que cuando creas una aplicación
el usuario te puede decir que solo tiene 10 equipos y al
cabo de 2 años tener 30000, lo que tenemos que buscar es
darle opciones, como que al entrar en el formulario si
este grid es muy grande no cargarlo y que sea el quien
decida si quiere cargarlo todo o indicando algún
parámetro, pero esta es una opción que decidirá el usuario
que es quien paga mi red, mi servidor y mi programa.Además
ahora no estoy haciendo nada comercial en .net solo viendo
sus posibilidades y el rendimiento y si es una alternativa
a otros lenguajes que utilizo actualmente.Por ejemplo
porque aunque en el grid solo tenga 10 registros el
formulario tarda 1 sg a cargarse?, pues a mi ese segundo
no me vale. Pues como he dicho antes con los threads me he
comido ese segundo y ahora si me gusta , porque el usuario
al hacer el click automáticamente ve el formulario y ahora
el decide si quiere esperar 8 segundos y ver todo el grid
o solo parte.Bueno podría seguir dando mi punto de vista
pero yo creo que este es un foro técnico para aprender
como se escribe el código para hacer esto y aquello
después será cada uno como quiera utilizarlo.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida