Delphi, C++ Builder & .NET Parte do sgcUI

sgcReports, o motor de relatórios para Delphi, C++ Builder & .NET

Projete um relatório uma só vez e entregue-o como PDF acessível, arquivo do Excel, CSV ou páginas PNG. Crie-o no código com uma cadeia fluente ou carregue uma definição JSON em tempo de execução, com grupos, subtotais, mestre-detalhe e códigos de barras. O motor não precisa de janela nem de DLL externa, então funciona em serviços e em daemons Linux64.

PDF/UA-1 com tags por padrãoPDF, XLSX, CSV e PNGServiços do Windows e Linux64Incluído no sgcUI Enterprise
Janela de pré-visualização do sgcReports com uma página de fatura e um código QR

Tudo o que um motor de relatórios precisa

Onze recursos, cada um com a API real e o tópico de ajuda por trás dele.

Projete o relatório

Descreva um relatório no código ou em JSON, com bandas, grupos e expressões de verdade.

Escreva um relatório completo em poucas linhas legíveis

Projete o relatório

Escreva um relatório completo em poucas linhas legíveis

Os designers de relatórios são ótimos até o layout precisar ficar no controle de versão, ser revisado em um pull request ou ser gerado a partir dos seus próprios metadados. O TsgcReportBuilder descreve estilos, páginas, bandas e itens como uma única cadeia fluente, de modo que um relatório é código comum que compila, gera diffs e é refatorado junto com o resto do seu projeto. A mesma cadeia prepara o relatório e o salva em todos os formatos de saída. Os relatórios criados assim podem ser gerados em um laço, compartilhados como funções e cobertos por testes de unidade como qualquer outro código.

  • Style, Page, GroupHeader, MasterData, GroupFooter e PageFooter se leem como o próprio layout
  • SaveToPDF, SaveToXLSX, SaveToCSV e SaveToPNG direto do construtor
  • Variantes de stream como SaveToPDFStream para respostas web
  • O construtor preenche um modelo TsgcReport normal que você ainda pode ajustar no código
  • Da direita para a esquerda para árabe e hebraico: RightToLeft no relatório e BiDiMode em bandas e itens espelham o layout, com texto árabe e hebraico com shaping nas saídas PDF, XLSX e HTML
Ler o tópico da ajuda
Grupos, subtotais e números de página que simplesmente funcionam

Projete o relatório

Grupos, subtotais e números de página que simplesmente funcionam

Os relatórios empresariais raramente são uma lista simples: vendas por região, faturas por cliente, estoque por depósito. O sgcReports tem um layout em bandas de verdade, com bandas de título do relatório, cabeçalho de página, cabeçalho de grupo, dados, rodapé de grupo, rodapé de página e resumo. Um grupo quebra quando a sua expressão muda, imprime os seus próprios totais e pode iniciar uma nova página ou repetir o seu cabeçalho em todas as páginas, de modo que relatórios longos continuam legíveis. Os subrelatórios permitem que uma página inclua o layout de outra, para resumos e apêndices.

  • GroupExpression em uma banda de cabeçalho de grupo, grupos aninhados para dois ou mais níveis
  • StartNewPage, RepeatOnEveryPage e KeepTogether controlam o fluxo das páginas
  • Tipos de banda de rbtReportTitle a rbtReportSummary, além de cabeçalhos e rodapés de coluna
  • TotalPages em expressões para rodapés "Página 2 de 7"
  • PrintOnFirstPage e PrintOnLastPage decidem onde as bandas de página aparecem; SubreportPageName incorpora outra página
Ler o tópico da ajuda
Faturas direto do seu banco de dados

Projete o relatório

Faturas direto do seu banco de dados

Uma fatura é um registro mestre com as suas linhas, e cada linha precisa do produto, da quantidade e do preço certos. Uma fonte dataset vincula qualquer TDataSet, FireDAC inclusive, e liga uma fonte de detalhe ao seu mestre por campos-chave, de modo que cada fatura imprime as suas próprias linhas e totais. Arrays JSON e as suas próprias fontes orientadas a eventos funcionam da mesma forma quando os dados não estão em um banco de dados. A banda de detalhe se repete para cada linha do registro mestre atual, e o rodapé imprime o total da fatura com uma expressão agregada sobre as linhas.

  • TsgcReportDataSetSource com MasterSource, MasterFields e DetailFields
  • O TsgcReportJSONSource lê um texto ou arquivo JSON, RecordsPath escolhe o array
  • O TsgcReportEventSource obtém linhas do seu código por meio de OnFirst, OnNext e OnGetValue
  • As fontes são registradas no motor com AddDataSource
Ler o tópico da ajuda
Mude um relatório sem recompilar

Projete o relatório

Mude um relatório sem recompilar

Uma nova coluna no extrato mensal não deveria exigir uma nova versão do seu aplicativo. As definições de relatório podem ser salvas e carregadas em JSON, de modo que os layouts podem ficar em um banco de dados, em uma pasta de configuração ou em um diretório específico de cada cliente. O aplicativo carrega a definição em tempo de execução, vincula os dados e a renderiza, e o mesmo arquivo alimenta o designer web. As definições são texto simples, então geram diffs limpos no controle de versão e podem ser geradas pelas suas próprias ferramentas ou migradas com um script.

  • sgcReportLoadFromJSON e sgcReportSaveToJSON, além das variantes de arquivo e de stream
  • sgcReportGenerateSchema grava um esquema JSON para editores e validação
  • Os erros informam o caminho JSON do membro com problema
  • O demo ReportJSONDefinition edita uma definição e os seus dados lado a lado
Ler o tópico da ajuda
Expressões e códigos de barras em qualquer banda

Projete o relatório

Expressões e códigos de barras em qualquer banda

Totais, datas formatadas, texto condicional e etiquetas de envio se resumem a expressões e códigos de barras. Qualquer item de texto pode conter expressões entre colchetes, como uma soma formatada de um campo, com funções de texto, número e data embutidas. Os códigos de barras também são itens, desenhados como vetores pelo motor do sgcPDF, de modo que etiquetas e notas de entrega saem nítidas em qualquer tamanho. As expressões são avaliadas pelo motor a cada linha, então o total de um rodapé sempre corresponde às linhas impressas acima dele.

  • Agregados e funções: Sum, FormatFloat, FormatDateTime, Upper, Round, IsNull
  • OnGetVariable fornece as suas próprias variáveis em tempo de execução
  • Barcode no construtor com rbsCode128, rbsEAN13, rbsQRCode, rbsDataMatrix, rbsPDF417 e mais
  • GS1-128, ITF, Codabar, UPC-A e Code 39 para etiquetas logísticas
Ler o tópico da ajuda

Entregue em qualquer lugar

Prepare uma vez, depois exporte para os formatos que os seus usuários e os órgãos reguladores pedem.

PDF acessível por padrão, PDF/A sob demanda

Entregue em qualquer lugar

PDF acessível por padrão, PDF/A sob demanda

Órgãos públicos e muitas empresas agora precisam publicar documentos que os leitores de tela consigam seguir, e os arquivos de arquivamento precisam continuar abrindo daqui a vinte anos. A exportação para PDF grava PDF/UA-1 com tags por padrão, com uma ordem de leitura lógica, texto alternativo para as imagens e títulos marcados. Ative o PDF/A-3 quando o documento for para um arquivo de longo prazo. No Delphi e no .NET, a exportação também grava PDF/A-4 e PDF/UA-2. As fontes são incorporadas pelo mesmo gerenciador de fontes que a pré-visualização usa, e a ajuda explica como validar um arquivo com a ferramenta gratuita veraPDF.

  • PDFUA é True por padrão no TsgcReportPDFExport
  • AltText e TagRole nos itens descrevem imagens e títulos
  • PDFA definido como rpaA3b ou rpaA3a para saída de arquivamento
  • FixedDocumentID e FixedCreationDate tornam a saída reproduzível byte a byte para testes
Ler o tópico da ajuda
Um relatório, todos os formatos que os seus usuários pedem

Entregue em qualquer lugar

Um relatório, todos os formatos que os seus usuários pedem

O financeiro quer o extrato em Excel, o cliente quer um PDF, a integração quer um CSV e a página web quer uma miniatura. O motor prepara as páginas uma só vez e cada exportação trabalha a partir do mesmo resultado preparado, então os números são idênticos em todos os arquivos. A saída XLSX mantém os números como números, de modo que a planilha pode somá-los sem limpeza. Toda exportação também pode gravar em um stream, que é o que uma resposta web ou um anexo de e-mail precisa, e SaveToFiles grava vários formatos em uma só chamada.

  • TsgcReportPDFExport, TsgcReportXLSXExport, TsgcReportCSVExport, TsgcReportImageExport
  • TsgcReportPreparedPages com LoadPrepared alimenta várias exportações a partir de uma única execução
  • DetectNumbers, SheetName e ExcludePageBands moldam a planilha
  • Páginas PNG no DPI que você passa para SaveToPNG
Ler o tópico da ajuda
Uma janela de pré-visualização para aplicativos desktop

Entregue em qualquer lugar

Uma janela de pré-visualização para aplicativos desktop

Os usuários querem folhear um relatório antes de imprimir ou salvar. O controle de pré-visualização mostra as páginas preparadas com a mesma renderização do PDF, com navegação de páginas, zoom e modos de ajuste e uma barra de ferramentas que você pode ocultar quando criar a sua própria. A pré-visualização VCL funciona no Windows; a pré-visualização FireMonkey funciona no Windows. A pré-visualização desenha por meio do controle visualizador do sgcPDF, então o que os usuários veem na tela é o que a exportação para PDF grava, e SaveToPDF na pré-visualização salva as páginas que eles estão vendo.

  • TsgcReportPreviewVCL com FirstPage, NextPage, PriorPage e LastPage
  • ZoomIn, ZoomOut, FitWidth e FitPage
  • ShowToolbar, CurrentPage e OnPageChange para a sua própria navegação
  • TsgcReportPreviewFMX: pré-visualização FireMonkey no Windows
Ler o tópico da ajuda

Entregue em qualquer lugar

Funciona em modo headless em serviços e daemons Linux

A maioria dos relatórios hoje é gerada em um servidor: extratos noturnos, faturas após o checkout, exportações por trás de uma API. O núcleo do sgcReports não depende de VCL nem de FireMonkey e não precisa de DLL externa nem de driver de impressora, então o mesmo código funciona em um serviço do Windows ou em um daemon Linux64. A ajuda documenta um padrão de pool de trabalhadores em que cada thread tem o seu próprio motor. Tarefas, dados e definições de relatório podem chegar como arquivos JSON, então um daemon pode ser alimentado por qualquer sistema capaz de gravar um arquivo.

  • O TsgcReportEngine prepara relatórios sem janela
  • O demo ReportLinuxDaemon monitora uma pasta de tarefas e renderiza PDF, XLSX, CSV ou PNG com 4 threads de trabalho
  • sgcReportsConfigureForServer ajusta o gerenciador de memória para muitas threads no Windows
  • Um TsgcReportFontManager compartilhado e somente leitura atende todas as threads
Ler o tópico da ajuda

Relatórios na web

A ponte sgcReportsHTML publica relatórios por HTTP e permite que os usuários editem layouts no navegador.

Relatórios na web Somente Registrada

Publique relatórios por HTTP

Um portal web, uma intranet ou um aplicativo móvel muitas vezes só precisa de uma URL que devolva o relatório. O endpoint HTTP registra relatórios por nome em um servidor HTTP do sgcWebSockets e os publica como PDF, XLSX, CSV ou PNG, com um visualizador HTML que pede os parâmetros, percorre o resultado e oferece os downloads. O seu código preenche os dados em um evento antes de cada execução. O endpoint usa as mesmas definições de relatório e fontes de dados do seu código desktop, então um relatório escrito uma só vez atende tanto o aplicativo quanto o navegador.

  • TsgcReportHTTPEndpoint com RegisterReport e BasePath
  • OnBeforePrepare define parâmetros e dados por requisição
  • TsgcReportHTMLViewer com ShowParameters para um formulário de parâmetros
  • Funciona sobre o TsgcWebSocketHTTPServer; o demo ReportHTTPServer é um servidor completo

Delphi e C++ Builder: exige o sgcWebSockets Professional ou superior e o sgcHTML. .NET: os pacotes esegece.sgcReports.HTML e AspNetCore hospedam as mesmas rotas.

Ler o tópico da ajuda

Relatórios na web Somente Registrada

Um designer de relatórios web para os seus usuários

Os usuários avançados sempre querem mais uma coluna ou um agrupamento diferente, e cada mudança costumava virar um chamado para os desenvolvedores. O designer no navegador edita a definição JSON de um relatório com uma tela de bandas, um inspetor de propriedades e uma pré-visualização ao vivo, servido pelo mesmo endpoint do relatório pronto. Você decide quem pode editar, e as definições salvas carregam em todas as outras partes do sgcReports. Um botão Baixar JSON entrega a definição a quem quiser guardá-la.

  • TsgcReportHTMLDesigner em um endpoint com DesignerEnabled
  • Árvore de página, bandas e itens, arrastar, redimensionar e ajustar em milímetros, desfazer e refazer
  • Inspetor de propriedades gerado a partir do esquema JSON do relatório; a validação no servidor aponta o campo
  • As definições salvas são carregadas com sgcReportLoadFromJSON em qualquer lugar, inclusive no daemon Linux

Deixe DesignerEnabled desativado nos endpoints de produção e coloque-o atrás da sua própria autenticação.

Ler o tópico da ajuda

Veja o sgcReports em ação

sgcReports dentro das demos da suíte sgcUI: aplicações completas que rodam offline com dados simulados integrados.

Quem cria com o sgcReports

Faturas, notas de entrega e extratos

Os aplicativos de gestão imprimem documentos do seu banco de dados todos os dias. Uma fonte dataset com mestre-detalhe liga cada fatura às suas linhas, os grupos e rodapés imprimem os totais, um código QR ou código de barras GS1-128 vai na etiqueta, e a exportação para PDF grava um arquivo acessível pronto para enviar por e-mail. O mesmo relatório é salvo em XLSX para a equipe de contabilidade.

  • Mestre-detalhe
  • Grupos e subtotais
  • Códigos de barras
  • PDF acessível
Execute o demo ReportInvoice

Relatórios no servidor para portais web

Portais de clientes e APIs internas precisam de relatórios sob demanda. Registre os relatórios no endpoint HTTP e o navegador recebe um visualizador com parâmetros e downloads, ou execute o motor em um daemon Linux64 que renderiza tarefas enfileiradas com um pool de trabalhadores. Não há driver de impressora, janela nem DLL externa envolvidos. As mesmas definições JSON atendem o visualizador e o daemon.

  • Publique relatórios por HTTP
  • Daemon Linux
  • Definições JSON
Execute o demo ReportHTTPServer

Obrigações de acessibilidade e de arquivamento

Fornecedores do setor público e empresas reguladas precisam publicar documentos que os leitores de tela consigam seguir e arquivá-los por anos. A saída PDF/UA-1 com tags é o padrão, o texto alternativo e as funções de título ficam nos itens do relatório, e o PDF/A-3 está a uma propriedade de distância. A ajuda mostra como verificar o resultado com o validador gratuito veraPDF. A saída reproduzível ajuda os testes automatizados a comparar arquivos.

  • PDF acessível
  • PDF/A-3
  • Saída reproduzível
Execute o demo ReportPDFUA

A Grouped Sales Report in a Few Lines

The same API in Delphi, C++ Builder and C#: a header per region, a line per sale and a subtotal per region, saved as PDF, XLSX and CSV.

A fluent report over a JSON source: one group per region with a subtotal, saved as PDF, XLSX and CSV.

uses
  Classes, SysUtils,
  sgcReports_Types, sgcReports_Model, sgcReports_Data, sgcReports_Fluent;

const
  CS_SALES = '[' +
    '{"Region":"East","Customer":"Acme Corp","Amount":1450.00},' +
    '{"Region":"East","Customer":"Blue Harbor","Amount":600.00},' +
    '{"Region":"North","Customer":"Nordic Labs","Amount":2100.75},' +
    '{"Region":"North","Customer":"Fjord Ltd","Amount":880.20}]';
  CS_TOTAL = '[FormatFloat(''#,0.00'', Sum(Sales.Amount))]';

procedure ExportSalesReport(const aFolder: string);
var
  oSales: TsgcReportJSONSource;
  oBuilder: TsgcReportBuilder;
begin
  oSales := TsgcReportJSONSource.Create(nil);
  oBuilder := TsgcReportBuilder.Create;
  try
    oSales.SourceName := 'Sales';
    oSales.JSON := CS_SALES;
    oBuilder.Title('Sales by region').Author('eSeGeCe').Units(ruMillimeters)
      .Style('Base').Font('Arial', 10).EndStyle
      .Style('Group').Font('Arial', 11).Bold.BackColor($EEEEEE).EndStyle
      .Page.Paper(rpsA4).Margins(15)
      // one header per region, one line per sale, a subtotal per region
      .GroupHeader('Sales.Region', 9).Style('Group')
      .Text('Region: [Sales.Region]', 0, 1, 180, 7).TagRole(rtrHeading2).EndBand
      .MasterData('Sales', 6).Style('Base')
      .Text('[Sales.Customer]', 2, 0, 120, 6)
      .Text('[Sales.Amount]', 130, 0, 50, 6).AlignRight.Format('#,0.00').EndBand
      .GroupFooter(9).Style('Base')
      .Text('Region total ' + CS_TOTAL, 80, 1, 100, 6).AlignRight.Bold.EndBand
      .PageFooter(8).Style('Base')
      .Text('Page [Page] of [TotalPages]', 0, 1, 180, 6).AlignCenter.EndBand
      .EndPage.Data(oSales);
    // accessible PDF (PDF/UA is on by default), plus the same data as Excel
    oBuilder.SaveToPDF(IncludeTrailingPathDelimiter(aFolder) + 'sales.pdf');
    oBuilder.SaveToXLSX(IncludeTrailingPathDelimiter(aFolder) + 'sales.xlsx');
    oBuilder.SaveToCSV(IncludeTrailingPathDelimiter(aFolder) + 'sales.csv');
  finally
    oBuilder.Free;
    oSales.Free;
  end;
end;

Ler o tópico da ajuda →

The same report in C++ Builder with the generated sgcReports headers.

#include <vcl.h>
#include "sgcReports_Types.hpp"
#include "sgcReports_Model.hpp"
#include "sgcReports_Data.hpp"
#include "sgcReports_Fluent.hpp"

void ExportSalesReport(const String Folder)
{
  const String Total = "[FormatFloat('#,0.00', Sum(Sales.Amount))]";
  TsgcReportJSONSource *Sales = new TsgcReportJSONSource(NULL);
  TsgcReportBuilder *Builder = new TsgcReportBuilder();
  try
  {
    Sales->SourceName = "Sales";
    Sales->JSON = "[{\"Region\":\"East\",\"Customer\":\"Acme Corp\",\"Amount\":1450.00},"
                  "{\"Region\":\"East\",\"Customer\":\"Blue Harbor\",\"Amount\":600.00},"
                  "{\"Region\":\"North\",\"Customer\":\"Nordic Labs\",\"Amount\":2100.75}]";
    Builder->Title("Sales by region")->Author("eSeGeCe")->Units(ruMillimeters)
      ->Style("Base")->Font("Arial", 10)->EndStyle()
      ->Style("Group")->Font("Arial", 11)->Bold()->BackColor(0xEEEEEE)->EndStyle()
      ->Page("")->Paper(rpsA4, roPortrait)->Margins(15)
      // one header per region, one line per sale, a subtotal per region
      ->GroupHeader("Sales.Region", 9)->Style("Group")
      ->Text("Region: [Sales.Region]", 0, 1, 180, 7)->TagRole(rtrHeading2)->EndBand()
      ->MasterData("Sales", 6)->Style("Base")
      ->Text("[Sales.Customer]", 2, 0, 120, 6)
      ->Text("[Sales.Amount]", 130, 0, 50, 6)->AlignRight()->Format("#,0.00")->EndBand()
      ->GroupFooter(9)->Style("Base")
      ->Text("Region total " + Total, 80, 1, 100, 6)->AlignRight()->Bold()->EndBand()
      ->EndPage()->Data(Sales);
    // accessible PDF (PDF/UA is on by default), plus the same data as Excel
    Builder->SaveToPDF(IncludeTrailingPathDelimiter(Folder) + "sales.pdf");
    Builder->SaveToXLSX(IncludeTrailingPathDelimiter(Folder) + "sales.xlsx");
    Builder->SaveToCSV(IncludeTrailingPathDelimiter(Folder) + "sales.csv");
  }
  __finally
  {
    delete Builder;
    delete Sales;
  }
}

Ler o tópico da ajuda →

The same builder chain in C#, with the same class names as Delphi.

using System.IO;
using esegece.sgcReports;

public static class SalesReport
{
    const string Sales = "[" +
        "{\"Region\":\"East\",\"Customer\":\"Acme Corp\",\"Amount\":1450.00}," +
        "{\"Region\":\"East\",\"Customer\":\"Blue Harbor\",\"Amount\":600.00}," +
        "{\"Region\":\"North\",\"Customer\":\"Nordic Labs\",\"Amount\":2100.75}," +
        "{\"Region\":\"North\",\"Customer\":\"Fjord Ltd\",\"Amount\":880.20}]";
    const string Total = "[FormatFloat('#,0.00', Sum(Sales.Amount))]";

    public static void Export(string aFolder)
    {
        using (TsgcReportJSONSource oSales = new TsgcReportJSONSource())
        using (TsgcReportBuilder oBuilder = new TsgcReportBuilder())
        {
            oSales.SourceName = "Sales";
            oSales.JSON = Sales;
            oBuilder.Title("Sales by region").Author("eSeGeCe").Units(TsgcReportUnits.ruMillimeters)
                .Style("Base").Font("Arial", 10).EndStyle()
                .Style("Group").Font("Arial", 11).Bold().BackColor(0xEEEEEE).EndStyle()
                .Page().Paper(TsgcReportPaperSize.rpsA4).Margins(15)
                // one header per region, one line per sale, a subtotal per region
                .GroupHeader("Sales.Region", 9).Style("Group")
                .Text("Region: [Sales.Region]", 0, 1, 180, 7)
                .TagRole(TsgcReportTagRole.rtrHeading2).EndBand()
                .MasterData("Sales", 6).Style("Base")
                .Text("[Sales.Customer]", 2, 0, 120, 6)
                .Text("[Sales.Amount]", 130, 0, 50, 6).AlignRight().Format("#,0.00").EndBand()
                .GroupFooter(9).Style("Base")
                .Text("Region total " + Total, 80, 1, 100, 6).AlignRight().Bold().EndBand()
                .EndPage().Data(oSales);
            // accessible PDF (PDF/UA is on by default), plus the same data as Excel
            oBuilder.SaveToPDF(Path.Combine(aFolder, "sales.pdf"));
            oBuilder.SaveToXLSX(Path.Combine(aFolder, "sales.xlsx"));
            oBuilder.SaveToCSV(Path.Combine(aFolder, "sales.csv"));
        }
    }
}
dotnet add package esegece.sgcReports

Ler o tópico da ajuda →

Execute os demos do sgcReports

Dez demos Delphi, oito demos C++ Builder e dez demos .NET acompanham o sgcReports. Os cartões abaixo são os projetos Delphi; a maioria tem um equivalente em C++ Builder e em .NET com o mesmo nome.

ReportInvoice

ReportInvoice

Uma fatura mestre-detalhe a partir de datasets: cabeçalho, linhas, totais e um código QR, na pré-visualização e como PDF.

ReportGroups

ReportGroups

Vendas agrupadas por região com cabeçalhos de grupo, subtotais e um total geral na banda de resumo.

ReportFluent

ReportFluent

Um relatório completo escrito com o construtor fluente, depois exportado para todos os formatos.

ReportJSONDefinition

ReportJSONDefinition

Edite uma definição JSON e os seus dados em dois campos de texto e renderize, com os erros apontando para o caminho JSON.

ReportPDFUA

ReportPDFUA

Saída PDF/UA-1 com tags, texto alternativo e funções de título, pronta para uma verificação com o veraPDF.

ReportExports

ReportExports

Um relatório preparado gravado como arquivos PDF, XLSX, CSV e PNG.

ReportDatabaseSQL

ReportDatabaseSQL

Um relatório alimentado por consultas SQL por meio de fontes dataset.

ReportMobileFMX

A pré-visualização FireMonkey com navegação de páginas. A pré-visualização FireMonkey funciona no Windows.

ReportLinuxDaemon

Um daemon de console para Windows e Linux64 que renderiza tarefas JSON enfileiradas com um pool de threads de trabalho.

Somente Registrada ReportHTTPServer

Relatórios publicados por HTTP com o visualizador no navegador, parâmetros e downloads. Exige o sgcWebSockets e o sgcHTML.

Demos compilados

Executáveis prontos para rodar de todos os produtos sgcUI, sem nada para instalar.

Baixar sgcUI_bin.zip →

Onde o sgcReports está incluído

O sgcReports faz parte do sgcUI Enterprise e também é vendido separadamente. Ele usa o motor do sgcPDF para a saída PDF e os códigos de barras, então o sgcPDF é necessário em qualquer configuração. O sgcReports também está incluído no pacote All-Access.

sgcReports pacote individual

€199 / desenvolvedor, código-fonte completo, 1 ano de atualizações.

Comprar o sgcReports → Ver preços →

sgcUI Enterprise

Todos os 14 produtos sgcUI, a partir de €699.

Ver Enterprise →

Os pacotes .NET Community gratuitos (esegece.sgcReports.Community, .WinForms.Community, .HTML.Community, .AspNetCore.Community) incluem o motor, as exportações e a pré-visualização. No Delphi, o instalador Community só oferece o sgcReports quando há um sgcPDF licenciado instalado. A ponte sgcReportsHTML para Delphi e C++ Builder é somente Registrada.

RecursoCommunity (gratuita)Registrada
Construtor fluente, modelo de relatório e definições JSON✓✓
Bandas, grupos, mestre-detalhe e expressões✓✓
Códigos de barras✓✓
Exportação PDF/UA e PDF/A-3✓✓
Exportação XLSX, CSV e PNG✓✓
Pré-visualização WinForms✓✓
Motor headless para serviços e Linux✓✓
Ponte sgcReportsHTML para Delphi e C++ Builder (endpoint HTTP, visualizador, designer web)−✓

Frameworks e plataformas suportados

Componentes do sgcReports

Motor e modelo

TsgcReport, TsgcReportEngine e o TsgcReportBuilder fluente.

Fontes de dados

TsgcReportDataSetSource, TsgcReportJSONSource e TsgcReportEventSource.

Exportações

TsgcReportPDFExport, TsgcReportXLSXExport, TsgcReportCSVExport e TsgcReportImageExport.

Pré-visualização

TsgcReportPreviewVCL e TsgcReportPreviewFMX, a pré-visualização FireMonkey funcionando no Windows.

Ponte sgcReportsHTML

TsgcReportHTTPEndpoint, TsgcReportHTMLViewer e TsgcReportHTMLDesigner. Exige o sgcWebSockets Professional ou superior e o sgcHTML. Registrada

.NET

Os mesmos nomes de classe no namespace esegece.sgcReports: o construtor, as fontes, o motor e as exportações.

DestinoComponentePlataformas
Delphi 7 a 13Modelo, expressões, dados, layout, motor e exportaçõesWindows, Linux64, macOS, iOS e Android
C++ Builder 2007 a 13As mesmas classesCabeçalhos .hpp gerados e bibliotecas estáticas
Pré-visualização VCLTsgcReportPreviewVCLWindows
Pré-visualização FireMonkeyTsgcReportPreviewFMXWindows
.NETConstrutor, fontes, motor, exportações e a pré-visualização WinFormsWindows, além do uso headless no Linux

Perguntas frequentes

Sim, sempre. O sgcReports grava PDF e desenha códigos de barras com o motor do sgcPDF. O sgcUI Enterprise inclui os dois. No instalador Community do Delphi, o sgcReports só é oferecido quando há um sgcPDF licenciado instalado. O motor de PDF também é o que desenha a estrutura de tags dos arquivos PDF acessíveis.

Sim, no navegador. O TsgcReportHTMLDesigner da ponte sgcReportsHTML edita definições de relatório JSON com uma tela de bandas, um inspetor de propriedades e uma pré-visualização ao vivo. No código, o construtor fluente e as definições JSON cobrem o mesmo modelo. As definições salvas são carregadas em aplicativos desktop, serviços e daemons da mesma forma.

Sim. O núcleo não depende de VCL nem de FireMonkey e não tem DLL externa, então o motor e as exportações funcionam em aplicativos de console e daemons Linux64. O demo ReportLinuxDaemon e o tópico do daemon Linux incluem uma unidade systemd. O mesmo código também funciona em serviços do Windows.

PDF (PDF/UA-1 com tags por padrão, PDF/A-3 sob demanda), XLSX, CSV e páginas PNG. Todos funcionam a partir das mesmas páginas preparadas, então um relatório é preparado uma vez e exportado quantas vezes você precisar. Cada exportação pode gravar em um arquivo ou em um stream, para respostas web e anexos de e-mail.

Sim, com um motor por thread. Cada trabalhador cria o seu próprio relatório, motor, fontes de dados e exportações, enquanto um gerenciador de fontes e uma definição JSON somente leitura podem ser compartilhados. O tópico Segurança de threads mostra o padrão de pool de trabalhadores. Um servidor Windows também pode chamar sgcReportsConfigureForServer uma vez na inicialização para muitas threads.

Sim. Guarde as definições de relatório como JSON e carregue-as em tempo de execução com sgcReportLoadFromJSON, de modo que um novo layout não exige uma nova compilação. Os usuários podem editá-las no designer web, ou o seu aplicativo pode gerá-las. Os erros ao carregar informam o caminho JSON do membro com problema, o que facilita o suporte a layouts específicos de cada cliente.

Sim. O TsgcReportPreviewVCL mostra as páginas preparadas com navegação, zoom e modos de ajuste. O TsgcReportPreviewFMX é a pré-visualização FireMonkey no Windows, e o .NET tem uma pré-visualização WinForms. A pré-visualização desenha por meio do controle visualizador do sgcPDF, então a tela corresponde à exportação para PDF.

Ajuda do sgcReports

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Experimente o sgcReports hoje

A avaliação do sgcUI inclui o sgcReports, o sgcPDF e todos os outros produtos sgcUI.