Mucha gente necesita una decisión que genere los informes en los sistemas Linux y que apoye también el trabajo con las bases de datos del tipo SQL y otras. Tenemos esta decisión en forma de FastReport.Core. Esta biblioteca permite a crear los informes en las distribuciones diferentes de Linux y tiene la posibilidad de conectar con las varias bases de datos. En este artículo consideramos cómo realizarlo en la distribución Debian 10 utilizando PostgreSQL.
Al principio instalamos PostgreSQL en Debian 10. La instalación en detalle se describe en la dirección siguiente. Verificamos cómo Postgres funciona pasando al terminal. Conectamos con la cuenta postgres por vía del comando siguiente:
$ sudo -i -u postgres
Luego para acceder al contenedor postgres escribimos lo siguiente:
$ psql
Ahora tenemos acceso a la línea de comandos postgres, y además nos hemos asegurado de la capacidad de funcionamiento.
Añadimos la contraseña del usuario postgres en lugar de ‘password123’:
ALTER USER postgres WITH PASSWORD ‘password123’
Creamos una tabla de prueba:
CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int);
Insertamos los datos en ella:
INSERT INTO test VALUES ('Chicago',30,40);
Ya está, ahora verificamos los datos de tabla con el comando siguiente. El resultado está presentado en la imagen debajo.
SELECT * FROM test;
Para crear una aplicación en .NET 5.0 necesitamos instalar el DotNet mismo. Pasamos a la página de instalación en detalle y estudiamos atentamente todos los puntos necesarios. Para el trabajo más cómodo puede instalar VS code en este enlace. Luego descargamos el paquete deb y lo instalamos al ordenador.
En el código VS code descargamos los complementos С# y Nuget Gallery. El último es necesario para la búsqueda útil y la instalación correcta de los paquetes nuget.
Creamos el proyecto en VS code, para eso pulsamos ctrl + J para abrir la consola dentro de VS code. Luego escribimos este comando:
dotnet new console
Después de crear un proyecto, necesitamos descargar y instalar las bibliotecas deseadas. Al terminar los pasos anteriores, abrimos Nuget Gallery en el proyecto de prueba.
Buscamos FastReport.Core y lo instalamos. Asegúrese de marcar la casilla Prerelease, ya que este paquete es una versión de demostración, de lo contrario el paquete no se mostrará.
El conector no es una versión de demostración, por eso no es necesario marcar la casilla Prerelease. Es suficiente buscar FastReport.Data.Postgres en una barra de búsqueda y instalarlo de la misma manera que el paquete precedente.
Después de instalar todos los componentes necesarios abrimos Program.cs en nuestro paquete y insertamos el código siguiente en el método main:
using System; using FastReport; using FastReport.Data; using FastReport.Utils; using FastReport.Export.Pdf; static void Main(string[] args) { //La creación de la conexión con PostgreSQL RegisteredObjects.AddConnection(typeof(PostgresDataConnection)); PostgresDataConnection connection = new PostgresDataConnection(); connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres"; connection.CreateAllTables(); //La creación del informe y la conexión de la base y de la tabla con el informe Report report = new Report(); report.Dictionary.Connections.Add(connection); connection.Enabled = true; foreach(TableDataSource table in connection.Tables) { if(table.Name == "public_test") { table.Enabled = true; } } ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); DataBand dataBand = new DataBand(); page.Bands.Add(dataBand); dataBand.CreateUniqueName(); //Asignamos DataBend a nuestra tabla dataBand.DataSource = report.GetDataSource("public_test"); dataBand.Height = Units.Centimeters * 0.5f; TextObject City = new TextObject(); City.CreateUniqueName(); City.Bounds = new System.Drawing.RectangleF(0,0,100,100); City.Parent = dataBand; //Asignamos los valores al objeto de texto desde el campo DB City.Text = "[public_test.city]"; TextObject temp_lo = new TextObject(); temp_lo.CreateUniqueName(); temp_lo.Bounds = new System.Drawing.RectangleF(150,0,100,100); temp_lo.Parent = dataBand; temp_lo.Text = "[public_test.temp_lo]"; TextObject temp_hi = new TextObject(); temp_hi.CreateUniqueName(); temp_hi.Bounds = new System.Drawing.RectangleF(300,0,100,100); temp_hi.Parent = dataBand; temp_hi.Text = "[public_test.temp_hi]"; report.Prepare(); PDFExport pDF = new PDFExport(); pDF.Export(report,"test.pdf"); }
Compilamos y iniciamos nuestro proyecto. Crea este archivo PDF del informe:
El resumen será muy simple. Conectar la base de datos con la propia aplicación no es difícil, hoy hemos creado un informe utilizando los datos de la base PostgreSQL en la distribución ebian 10.