Ok, así que estoy construyendo una especie de central de informes para la empresa en la que trabajo y la parte fácil fue construir un buscador de archivos basado en web, ahora voy a pasar al aspecto del informe y para comenzar, estoy integrando Crystal Reports. Ya he obtenido los archivos del sitio web de SAP para ellos, pero me encuentro con un par de problemas,Crystal Reports en MVC
En primer lugar, todos los ejemplos que he encontrado hacen que sea necesario definir la fuente de datos/base de datos, e incluir información de inicio de sesión en el código. Esto es un problema porque tenemos MUCHOS informes de cristal, con muchas referencias de bases de datos diferentes, así que no puedo usar uno para todos. De hecho, hay informes de que usamos esa base de datos múltiple de referencia al mismo tiempo.
En segundo lugar, todos los ejemplos que he encontrado lo hacen parecer que debe tener una página específica creada para cada informe. Mi objetivo es poder tener el enlace del informe como una variable y tener una página para todos los informes que tenemos.
Miré todo lo que pude encontrar ayer y no pude encontrar lo que necesitaba. También me pregunto qué demonios tiene la función ReportClass.Load. Fue en cada ejemplo que pude encontrar y no noté ninguna diferencia explícita en el ReportClass que tenía cuando lo usé.
Mientras buscaba, encontré una respuesta que sugería crear una aplicación de formularios web que creara los Informes, y luego usé un I-Frame para capturarlo, pero eso es algo que quiero evitar.
Así pues, en opinión:
1) Tengo que construir Crystal Reports sin tener que hacer referencia a la base de datos
2) Necesito que sea flexible a un informe variable sólo el suministro de ruta de acceso al. archivo rpt
3) me gustaría que fuera en una sola aplicación, en MVC, y evitando IFrames
Muchas gracias por su ayuda !!
EDIT: Encontré una solución que me funciona. En lugar de usar una vista RAZOR, utilicé una vista ASPX, que tiene la herramienta Crystal Reports Viewer en la caja de herramientas. Para hacerlo variable, utilicé ViewBag.
Código de control:
[HttpGet]
public ActionResult Viewer(string Path)
{
var sessionID = Session.SessionID;
ViewBag.Path = newPath;
return View();
}
ASPX Ver código:
<% Report.Report.FileName = ViewBag.Path; %>
<CR:CrystalReportViewer ID="Viewer" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" Height="100%" ReportSourceID="Report" ToolPanelWidth="200px" Width="100%" />
<CR:CrystalReportSource ID="Report" runat="server">
<Report></Report>
</CR:CrystalReportSource>
Me encantaría, y esa puede ser una buena solución a partir de ahora, de hecho, planeo agregar funcionalidad para los informes de SSRS así como los informes de Excel en el proyecto final, pero ya tenemos literalmente cientos de Crystal Reports ya hechos , Solo estoy creando el visor para ellos. Intentar rehacerlos tomaría demasiado tiempo. Nos estamos moviendo más hacia los informes de SSRS ahora, pero todavía necesitamos una gran mayoría de los informes que ya tenemos en Crystal. ¡¡Y gracias por ayudar !! –
Sí, pasé por alto la parte de su publicación sobre los informes existentes, así que eliminé mi comentario :) – HardCode
No sé sobre los puntos 2 y 3, pero el punto 1 no es posible en Crystal, o SSRS, o cualquier otro diseñador de informes, lo sé, ¿cómo se supone que debe agregar campos a un informe si no tiene forma de determinar qué campos son? (Debería poder * modificar * el diseño de los informes existentes sin acceso a la base de datos, pero no construirlos desde cero.) –