PDA

Ver la versión completa : Otros Lenguajes Necesito ayuda mostrando un formulario de VS en un navegador



Drumpi
04/12/2019, 12:46
Hola a todos:

Estoy con una APP hecha en Xamarin para Android, y tengo que mostrar un Crystal Report.
Actualmente lo que he hecho es mandar una petición a la WebApi para que genere un PDF del mismo, y después usar un visor PDF javascript desde una WebPage (una página de Xamarin que actúa como un navegador web, por si alguien no controla Xamarin).

Ahora me han pedido que vaya un paso más allá y que se muestre el Crystal Report directamente. Como no hay ningún addon ni programa de terceros para Android, he pensado que la mejor ruta es visualizarlo mediante la WebPage desde el servidor. Tengo un plugin, que me permite añadir un control a un formulario de Visual Studio para ver los Crystal Reports, pero ahora no sé cómo incrustarlo en alguna página web para verlo desde el móvil.

He seguido esta guía: http://alzamoramatos.blogspot.com/2014/07/como-ejecutar-una-winform-app-de-c-como.html
Y funcionar, funciona... pero sólo con iExplorer. El fichero xbap desde Chrome intenta descargarlo, no lo ejecuta. Estoy haciendo pruebas con Android, pero quería buscar algo más sencillo.

Yo de programación web no tengo ni idea (salvo, quizás, lo básico de WebApis), me pierdo con tantas tecnologías (WPF, WebForms, MVC...), y no sé cuál me podría servir para coger ese formulario y mostrarlo de forma sencilla. Estoy creando proyectos al tuntún, siguiendo tutoriales para novatos de todos ellos a ver cuál me sirve, pero si hay alguien por aquí que haya hecho algo parecido, le agradecería que me apuntara en la dirección correcta.

Muchas gracias.

^MiSaTo^
04/12/2019, 12:59
Pregunto desde la ignorancia absoluta porque no he tocado nunca ni Xamarin, ni Crystal Reports ni nada de windows. No puedes hacerte tu una vista en la app en la que te mande el report en JSON y tú lo visualices en bonito? O Crystal Reports no tiene una API pública para hacer eso?

Drumpi
04/12/2019, 13:41
Los informes de Crystal Reports son demasiado complejos como para intentar diseñar un visor desde cero, además que son "interactivos" (puedes acceder a sub-informes y a los detalles de las líneas).
Mandar la información en "crudo" e ir creando las páginas para ver la cabecera de la factura, la pestaña de las líneas, e ir enlazando los detalles en otras páginas, es lo que yo propuse. Pero como se tardan unas 4 horas en cada página (diseño, lógica de la página, envío y recepción, código de la webApi, consultas SQL...)... Y aparte, querían que el cliente pudiera diseñar/modificar sus propios informes sin tener que recompilar la APP para ello.

Hay una API, y como digo, un addon de VS, que te permite manejar dichos informes (actualizar los datos desde la BBDD, exportar a PDF, cambiar los parámetros de entrada...) y visualizarlos, pero sólo funciona en aplicaciones de escritorio (de momento, que yo sepa, sólo Windows, ignoro si los Windows.Forms se pueden ver en MacOS). No hay nada parecido en Xamarin, o al menos, no sé cómo meter el control del formulario en una vista XAML. Creo que no se puede.
Y está el problema de que es un formato cerrado.

^MiSaTo^
04/12/2019, 13:44
No termino de entender cuál es el problema en hacer lo que he dicho. Más si la manera de visualizarlos es con algo hecho en Windows.Forms que solo funciona en Windows.
Igual no estoy entendiendo bien el problema :) Así que creo que no te puedo ayudar mucho más.

Drumpi
04/12/2019, 14:30
Noooo :D Xamarin no tiene NADA que ver con Windows ni Windows forms, ese es el problema:
El plugin de Crystal Reports sólo sirve en Windows.Forms, pero Xamarin no es compatible. Por eso quiero que Xamarin abra una página web donde se muestre un formulario de Windows.Forms, pero no sé con qué tecnología web puedo hacer eso, salvo por lo que he puesto en el enlace del primer mensaje, y Chrome no me lo abre, sólo descarga la página como si fuera un fichero cualquiera.

^MiSaTo^
04/12/2019, 14:43
Noooo :D Xamarin no tiene NADA que ver con Windows ni Windows forms, ese es el problema:
El plugin de Crystal Reports sólo sirve en Windows.Forms, pero Xamarin no es compatible. Por eso quiero que Xamarin abra una página web donde se muestre un formulario de Windows.Forms, pero no sé con qué tecnología web puedo hacer eso, salvo por lo que he puesto en el enlace del primer mensaje, y Chrome no me lo abre, sólo descarga la página como si fuera un fichero cualquiera.
Es que por eso te digo. Yo dudo que Windows forms funcione en otro SO que no sea Windows. Si ya dices que ni Chrome te lo abre... xD
Por eso yo lo que haria sería tener algo que generara las vistas en la aplicación a partir de los datos (un json o algo así) servidos de la API de Crystal Reports. Por muy complejo que sea no tiene que ser todo en 1 sola vista, pueden ser varias y se pueden generar componentes en tiempo real según vas leyendo el json.
Yo hice algo parecido para una aplicación de consulta médica donde yo recibía un JSON con ciertas configuraciones y de ahí se generaba todas las vistas de la applicación en tiempo real.

josepzin
04/12/2019, 14:48
Por lo que entiendo, el compañero no quiere meterse en el marrón de tener que procesar los datos para crear una visualización. Algo lógico si existe una manera de no tener que hacerlo :P

swapd0
04/12/2019, 14:55
Crystal Reports... uff aun existe eso? Yo me acuerdo que hace eones tenia que imprimir algo y me decían de usar eso, al final pase y lo hice en un rato con los informes que traía el Delphi (tampoco me acuerdo como se llamaban).

Muchas de estas aplicaciones que van en windows desde hace eones, o usas windows o te olvidas, suelen tener muchas dependencias con cosas especificas del windows (COM, OLE, etc) y no tienen un API en C para usarlas en otras plataformas.

^MiSaTo^
04/12/2019, 15:10
Por lo que entiendo, el compañero no quiere meterse en el marrón de tener que procesar los datos para crear una visualización. Algo lógico si existe una manera de no tener que hacerlo :P

Claro si eso yo tb lo entiendo pero es que en el movil no hay muchas opciones xD

Drumpi
04/12/2019, 15:21
Por lo que entiendo, el compañero no quiere meterse en el marrón de tener que procesar los datos para crear una visualización. Algo lógico si existe una manera de no tener que hacerlo :P

Exacto, por las razones explicadas en la tercera respuesta: tiempo, configurabilidad... Vamos, todo se resume en "el cliente/jefe no quiere que se haga así".


Crystal Reports... uff aun existe eso? Yo me acuerdo que hace eones tenia que imprimir algo y me decían de usar eso, al final pase y lo hice en un rato con los informes que traía el Delphi (tampoco me acuerdo como se llamaban.)

Existe y sigue en desarrollo. Lo compró la empresa que desarrolla nuestro ERP, y tengo que lidiar con ellos de vez en cuando.
Y sí, esto usa COM. Como digo, sólo he visto una app para iOS fuera de entornos Windows.
Hay un programa que permite crear una página en el IIS para visualizarlos online, pero la licencia cuesta 1500$ a los 3 años, o 1000$ al año, y creo que hace lo que yo intento crear: usar la API de Windows, el plugin de Windows.Forms, y alguna tecnología web para verlos en red, que es lo que ya no sé, y es lo que ando preguntando.

^MiSaTo^
04/12/2019, 15:28
Bueno buscando un poco en google veo que hay cosas para leer los informes de crystal reports en PHP y python. No he querido mirar nada más porque no se qué conocimientos y/o requerimientos tienes para hacer una web si es como quieres hacerlo.
Pero tienes opciones. Has buscado en Stackoverflow?

Drumpi
04/12/2019, 17:41
Llevo ya dos días buscando información sobre cualquier cosa que sea ver los Crystal Reports via web. A lo mejor no le estoy haciendo las preguntas correctas a Gugle.
De momento en Xamarin me han "confirmado" que no es posible, del foro oficial estoy esperando respuesta...

Hasta ahora no me había aparecido nada de PHP. Puede ser interesante mientras no se limite a lo que he leído, a generar PDFs, eso ya lo hago yo.
Lo ideal es usar IIS, no tener que instalar nada más, pero estoy abierto a otras posibilidades. De conocimientos, insuficientes: como digo, WebApi y gracias, es decir, crear controlador y ejecutar código C#. Pero vamos, que si hay que aprender las bases de un nuevo lenguaje, no pasa nada.

Resumiendo mucho: si pudiera hacer esto
http://alzamoramatos.blogspot.com/2014/07/como-ejecutar-una-winform-app-de-c-como.html
usando algo más amigable con el navegador de Android que WPF, ya estaría.

josepzin
04/12/2019, 18:13
Los programadores a veces tenemos que solucionar cada marrón... :D

swapd0
04/12/2019, 18:23
Se supone que te piden mostrar un informe de Crystal Report y que se pueda toquetear, que funcionen los controles que lleven los informes (IIRC soportaba cosas de estas), por eso no les vale generar un PDF.

En mi opinion, imposible que eso funcione en algo que no sea un windows.

Trenz
04/12/2019, 23:35
Crystal Reports... uff aun existe eso?

Tecnologías zombi que sobreviven alimentandose de los sesos de los jóvenes e incautos programadores que las cárnicas les suministran.

-----

Drumpi, ni idea sobre el tema, pero parece que tu google-fu está un poco oxidado. A ver si esto te ayuda...



Does WPF XAML Browser Application (XBAP) work on Android and Windows Phone browsers?

No.

XBAP is really a HACK to make WPF applications "seem" like they're "web apps" by running them inside Internet Explorer. It does NOT support any other browsers (Chrome, Mozilla, etc) and it does NOT run in mobile devices. It requires the full .Net Framework installed in the target machine and thus it is only runnable in devices which support the full .Net Framework (Windows PC, Notebooks and Tablets with the full version of Windows (NOT RT).


https://stackoverflow.com/questions/24100526/is-wpf-xaml-browser-application-xbap-works-on-android-and-windows-phone-browse



The integration of Crystal Reports in Visual Studio .NET and availability of wizards and tools has made writing reports a piece of cake for developers. Visual Studio .NET hides all the details from developers and provides them easy to use user interface so they can concentrate on designing the layouts of the reports. But it's always a good idea to understand what goes under the hood. In this article, I will explore the Crystal Report Viewers and their functionality.

Crystal Report Viewers work as a container of a report and allow us to view a crystal report in Windows and Web applications. Crystal Reports for Visual Studio .NET provides two report viewers - Windows Forms Viewer and Web Forms Viewer. As you can guess from these names, Windows Forms Viewer control is used to view reports in Windows Forms applications and Web Forms Viewer is used to display reports in Web Forms applications.


https://www.c-sharpcorner.com/article/understanding-crystal-report-viewers



In this tutorial, we are going to discuss how to create a Crystal Report using ASP.NET Web Form applications.


https://www.tektutorialshub.com/crystal-reports/how-to-create-crystal-reports-in-asp-net-webforms

Drumpi
05/12/2019, 13:46
swapd0 No sé si sólo funcionará en Windows, pero ya sabes que a veces nos toca hacer magia para cumplir los deseos de los jefes y, sobre todo, de los clientes :lol:
Trenz ¡Ostras! pues si el Addon de Visual Studio me permite ver los informes desde un proyecto Web Forms directamente, puede ser la solución que buscaba. ¿Cómo no he visto eso en nada de la documentación que he leído? Sólo he visto referencias al WINDOWS Form.
La duda, adelantándome mucho a los acontecimientos, sería entonces si puedo mostrar el Web Form desde la WebAPi directamente, o si necesito crear un proyecto/web aparte. Como digo, las tecnologías web se me escapan ^^U
Gracias por esta información, puede que hayas dado con la solución.

Drumpi
11/12/2019, 11:46
Hola de nuevo:

Sigo con lo mismo. Gracias a vosotros hemos dado un gran paso y ya he podido mostrar el Crystal Report en un navegador en una máquina remota y en el dispositivo móvil. Todavía estoy puliendo detalles, pero de momento funciona.
Ahora tengo dudas sobre WebForms y su integración en la WebApi (MVC), pero mejor dejo esto para comentarlo en el foro privado, porque entramos en temas más delicados, que no sé si debo comentar en público.