DataReader en DataSet

15/03/2007 - 21:20 por Brian | Informe spam
Buenas Tardes

Tengo una duda, estoy utiizando ReportingServices, pero quiero aumentar el
Performance de la aplicación con respecto a este tema de reportes... Supe que
una forma de hacer esto es utilizando DataReader en vez de los DataSets que
se crean por el IDE de VS2005, ahora la pregunta es: ¿Puedo utilizar
DataReader para hacer consultas o retornar ejecuciones de Procedimientos
Almacenados?, Si un reporte necesita tener más de un DataReader, ¿lo puedo
agregar a un DataSet vacio?, ¿Cómo lo hago?.

Muchas Gracias por su colaboración con este tema.

Cordialmente,


Brian Garnica
Bogotá, Colombia
bamgar@gmail.com
bamgar@hotmail.com
 

Leer las respuestas

#1 .N®
01/04/2007 - 15:36 | Informe spam
¿Puedo utilizar DataReader para hacer consultas o retornar ejecuciones
de Procedimientos Almacenados?
Efectivamente, un datareader lo puedes poblar a partir de una consulta o
puedes pedirle que ejecute un procedimiento almacenado y recuperar los
registros o resultados que devuelva...

'Agregue los namespaces
Imports System.Data
Imports System.Data.SqlClient


Dim MyConnection As SqlConnection
Dim MyCommand As SqlCommand
Dim MyReader As SqlDataReader

MyConnection = New SqlConnection()
MyConnection.ConnectionString = "Data Source=localhost; Initial
Catalog=cargo; Integrated Security=SSPI"

MyCommand = New SqlCommand()
'Si quieres usar un procedimiento almacenado
'comenta las siguientes 2 lineas
MyCommand.CommandText = "SELECT TOP 3 * FROM CUSTOMERS"
MyCommand.CommandType = CommandType.Text
'y quita los comentarios de las siguientes 2 lineas
'MyCommand.CommandText = "ElNombreDeTuProcedimientoAlmacenado"
'MyCommand.CommandType = CommandType.StoredProcedure
MyCommand.Connection = MyConnection
MyCommand.Connection.Open()

MyReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection)

gvCustomers.DataSource = MyReader

MyCommand.Dispose()
MyConnection.Dispose()

Si un reporte necesita tener más de un DataReader, ¿lo puedo agregar a
un DataSet vacio?, ¿Cómo lo hago?.
en principio no... pero sí... vamos me explico: el objeto datareader no
se puede trabajar directamente en un dataset porque forman parte de
filosofías opuestas: entornos conectados vs. desconectados. Por lo que
tendrías que recuperar el contenido del datareader, meterlo en un
arreglo y en el arreglo pasarselo al DataSet. Esto es:
1. Deberás crear un nuevo objeto DataTable y agregarlo a tu DataSet.
2. Crear cada DataColumn que necesitará tu DataTable y agregarlos al
DataTable del paso anterior (esto con el fin de crear la estructura de
datos).
3. Crear, por cada registro de tu datareader, un nuevo DataRow y
agregarlo a tu DataTable (esto con el fin de agregar cada registro)

Despues podrás manipularlos tranquilamente en tu DataSet...


Muchas Gracias por su colaboración con este tema.

Cordialmente,


Brian Garnica
Bogotá, Colombia





Suerte :D

Preguntas similares