Muitos precisam de uma solução que irá gerar relatórios em sistemas Linux e também irá suportar o trabalho com bancos de dados SQL semelhantes e não só. E nós temos essa solução na forma de FastReport.Core. Esta biblioteca permite a criação de relatórios em diferentes distribuições Linux e tem a capacidade de se conectar a diferentes bancos de dados. Neste artigo, veremos como implementar isso em uma distribuição Debian 10 usando PostgreSQL.
Para começar, instalamos o PostgreSQL no Debian 10. A instalação detalhada é descrita por seguinte link. Vamos verificar o desempenho do Postgres indo para o terminal. Passamos para a conta do postgres com o seguinte comando:
$ sudo -i -u postgres
Depois disso, para obter acesso ao shell do postgres, escrevemos o seguinte:
$ psql
Agora temos acesso à linha de comando do postgres e, além disso, verificamos que ela está funcionando.
Adicione uma senha para o usuário postgres em vez de 'password123':
ALTER USER postgres WITH PASSWORD ‘password123’
Criamos uma tabela de teste:
CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int);
E preenchemos com dados:
INSERT INTO test VALUES ('Chicago',30,40);
Agora tudo é feito, agora verificamos a tabela quanto a dados com o seguinte comando. O resultado é refletido na figura abaixo.
SELECT * FROM test;
Para criar um aplicativo no .NET 5.0, precisamos instalar o próprio DotNet. Vamos para página de instalação detalhada e estudamos cuidadosamente todos os pontos necessários. Para uma operação mais conveniente, você pode baixar o VS code por este link. Em seguida, baixe o pacote deb e instale-o no seu computador.
No próprio VS code, baixamos plugins da # E NuGet Gallery. Este último é necessário para uma pesquisa conveniente e instalação adequada de pacotes nuget.
Criamos um projeto no VS code, para fazer isso, clique em ctrl + J para abrir o console dentro do VS code. Depois de inserir este comando:
dotnet new console
O próximo passo depois de criar o projeto, precisamos baixar e instalar as bibliotecas necessárias. Após a conclusão das ações anteriores, abrimos a Galeria Nuget no projeto de teste.
Procure FastReport.Core e instale-o. Certifique-se de verificar a caixa de seleção ao lado do Prerelease, pois este pacote é uma versão demo, caso contrário, o pacote não será exibido.
O conector não é uma versão de demonstração, portanto, não é necessário marcar a caixa ao lado do Prerelease. Basta encontrar na barra de pesquisa FastReport.Data.Postgres e instalá-lo exatamente como o pacote anterior.
Depois de instalar todos os componentes necessários, abrimos Program.cs em nosso projeto e insirimos o seguinte código no método main:
using System; using FastReport; using FastReport.Data; using FastReport.Utils; using FastReport.Export.Pdf; static void Main(string[] args) { //Como criar uma conexão PostgreSQL RegisteredObjects.AddConnection(typeof(PostgresDataConnection)); PostgresDataConnection connection = new PostgresDataConnection(); connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres"; connection.CreateAllTables(); //Como criar um relatório e conectar o banco de dados e a tabela ao relatório 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(); //Atribuir DataBend para a nossa tabela 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; //Atribuimos valores a um objeto de texto do 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 e executamos nosso projeto. Este criará um arquivo de relatório PDF assim:
A conclusão será muito simples. Não é difícil conectar o banco de dados ao seu próprio aplicativo, pois hoje criamos um relatório usando dados do banco de dados PostgreSQL na distribuição Debian 10.