Crystal Report - Pasar un DATASET a un informe

   
Vista:

Pasar un DATASET a un informe

Publicado por Siz (14 intervenciones) el 05/09/2007 09:42:04
Hola, tengo un problema con mis informes. Os situo el entorno: tengo los informes alojados en un servdor (como repositorio de informes) distinto al servidor en el cual alojo la aplicacion web. Consigo acceder al report y mostrarlo siempre que el informe no necesite "tirar" de una fuente de datos (por ejemplo un dataset), es decir, consigo mostrar un informe vacio, solo con texto plano.

Mi problema es que mis informes dependen de DATASETS creados directamente en la aplicacion. Al estar los informes alojados en otro servidor, necesito indicarles a esos informes la fuente de datos (es decir, pasarle el DATASET), pero no consigo hacerlo del todo.

La linea de codigo que importa es la siguiente:

"informe.DatabaseController.SetDataSource(DataSetConverter.Convert(DataSetDeportistas), "deportistas", "deportistas");"

pero me dice que la tabla deportistas no existe!!

Quizas este equivocado y un dataset a un informe no se pase mediante la propiedad SetDataSource del DatabaseController.

Alguien sabe responder a esta duda?? Cualquier idea sera de agradecer!

Muchas gracias y un saludo!!

Aqui os pongo el codigo entero para que os podais situar:

************************************************************************************************************
protected void Page_Load(object sender, EventArgs e)
{

Dataset1TableAdapters.DEPORTISTATableAdapter ta = new Dataset1TableAdapters.DEPORTISTATableAdapter();
Dataset1.DEPORTISTADataTable dt = ta.GetData();


//Creamos el objeto DATASET de Deportistas y lo rellenamos a traves del Adapter
Dataset1 DataSetDeportistas = new Dataset1();
DataSetDeportistas.Merge(dt);

/* ENLAZAR A UN SERVIDOR RAS ADMINISTRADO MEDIANTE EL MÉTODO ReportAppFactory.OpenDocument() */

// Declaramos y creamose una instancia de la clase SessionMgr.
SessionMgr sessionMgr = new SessionMgr();

// Hacemos "logon" en crystal reports server
// recuperamos la instancia de SessionMgr como instancia de EnterpriseSession mediante
// el servicio InfoStore

EnterpriseSession enterpriseSession = sessionMgr.Logon(
ConfigurationSettings.AppSettings["Logon.Usuario"],
ConfigurationSettings.AppSettings["Logon.Password"],
ConfigurationSettings.AppSettings["Logon.Servidor"],
ConfigurationSettings.AppSettings["Logon.Autentificacion"]);

EnterpriseService enterpriseService = enterpriseSession.GetService("InfoStore");

//Una vez recuperado el servicio InfoStore (como EnterpriseService), desde el método GetService() de EnterpriseSession.
// Declaramos y creamos una instancia de InfoStore con el servicio InfoStore recuperado.

InfoStore infoStore = new InfoStore(enterpriseService);

// Asignamos el valor de la instancia de EnterpriseService, pasando la cadena
// "RASReportFactory" al método de GetService() de EnterpriseSession.

enterpriseService = enterpriseSession.GetService("RASReportFactory");

// Devolvemos la propiedad Interface a EnterpriseService como variable de objeto.

Object rrfObject = enterpriseService.Interface;

ReportAppFactory reportAppFactory = (ReportAppFactory)rrfObject;

// Introducimos la siguiente cadena de consulta para realizar una consulta sobre el informe
// en Crystal Reports Server o BusinessObjects Enterprise.

string queryString = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS "
+ "Where SI_PROGID='CrystalEnterprise.Report' "
+ "And SI_NAME Like '%Deportistas%'";

// Recuperamos la clase indizada InfoObjects que contiene el resultado de la consulta,
// pasando la cadena de consulta al método Query de InfoStore.

InfoObjects infoObjects = infoStore.Query(queryString);

// recuperamos InfoObject desde la primera columna de la clase indizada InfoObjects.
InfoObject infoObject = infoObjects[1];

ReportClientDocument informe = new ReportClientDocument();

// Pasamos la propiedad ID de InfoObject y el número entero 0 al método OpenDocument
// de la instancia de ReportAppFactory.

informe = reportAppFactory.OpenDocument(infoObject.ID, 0);

// Asignamos origen de datos
/* informe.DatabaseController.SetDataSource(DataSetConverter.Convert(DataSetDeportistas), "deportistas", "deportistas");

// Enlazamos la instancia de ReportClientDocument al control CrystalReportViewer.

CrystalReportViewer1.ReportSource = informe;
CrystalReportViewer1.DataBind();

*/

************************************************************************************************************
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar un DATASET a un informe

Publicado por Siz (14 intervenciones) el 05/09/2007 16:32:04
Ya he encontrado la solucion por si a alguien le sirve. La forma de pasar un DATASET a un informe es de la siguiente manera:

DataSetConverter.SetDataSource(informe, DataSetDeportistas);

Espero que sirve a alguien!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar