<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pius Richter</title>
    <description>The latest articles on DEV Community by Pius Richter (@piusrichter).</description>
    <link>https://dev.to/piusrichter</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F647021%2F6130c7b2-1f77-4188-ad08-0c0fd19c431d.png</url>
      <title>DEV Community: Pius Richter</title>
      <link>https://dev.to/piusrichter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/piusrichter"/>
    <language>en</language>
    <item>
      <title>Oracle Database Reporting Tool</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Wed, 22 Oct 2025 07:24:24 +0000</pubDate>
      <link>https://dev.to/combit/alternative-oracle-database-reporting-tool-cg4</link>
      <guid>https://dev.to/combit/alternative-oracle-database-reporting-tool-cg4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Developers working with Oracle databases often need to generate dashboards, printable reports, exports, or user-editable templates from structured data.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Oracle Reports remains a known option, it's no longer actively developed. For .NET developers seeking a modern alternative, &lt;strong&gt;List &amp;amp; Label&lt;/strong&gt; is one reporting tool that integrates with Oracle using standard components and libraries.&lt;/p&gt;

&lt;p&gt;This article outlines how it works and shows limitations and benefits.&lt;/p&gt;

&lt;p&gt;If you would like to test Oracle database reporting with List &amp;amp; Label, get the free trial linked at the end of this article.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Generate Reports Using List &amp;amp; Label
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How to Connect and Query Oracle Data
&lt;/h3&gt;

&lt;p&gt;List &amp;amp; Label connects directly to Oracle databases, making it possible to evaluate data stored in tables, views, sql statements or returned by executing stored procedures. As a reporting tool with relational database support, it also enables features like drilldown and drill-through for deeper data exploration.&lt;/p&gt;

&lt;p&gt;To connect to an Oracle database, List &amp;amp; Label uses the &lt;code&gt;OracleConnectionDataProvider&lt;/code&gt; class from the &lt;a href="https://docu.combit.net/net/en/combit.ListLabel~combit.Reporting.DataProviders_namespace.html?dlyx-id=v009c5b0s075ogatfvor4gmga8" rel="noopener noreferrer"&gt;&lt;code&gt;combit.Reporting.DataProviders&lt;/code&gt;&lt;/a&gt; namespace. This requires the &lt;a href="https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core" rel="noopener noreferrer"&gt;&lt;code&gt;Oracle.ManagedDataAccess&lt;/code&gt; NuGet package&lt;/a&gt;, which provides access to Oracle's ODP.NET (Oracle Data Provider for .NET). Once set up, the entire Oracle database - including tables and views - can be queried. The code example below shows the steps for establishing the connection and launching the List &amp;amp; Label Designer to create a report.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Step1: Adding the NuGet packages for List &amp;amp; Label and Oracle 
// and the necessary using statements
using combit.Reporting;
using combit.Reporting.DataProviders;
using Oracle.ManagedDataAccess.Client;

// Step 2: Preparing the connection information for the Oracle database
OracleConnectionStringBuilder oracleConnectionStringBuilder =
    new OracleConnectionStringBuilder
    {
        DataSource = Properties.Resources.OracleInstance,
        UserID = Properties.Resources.OracleUsername,
        Password = Properties.Resources.OraclePassword,
        PersistSecurityInfo = true
    };

// Step 3: Connecting the Oracle connection with the appropriate List &amp;amp; Label data provider 
OracleConnectionDataProvider oracleDataProvider = 
    new OracleConnectionDataProvider(
        oracleConnectionStringBuilder.ConnectionString,
        "HR"
        );

// Step 4: Creating the List &amp;amp; Label object, adding the Oracle data provider 
// and calling the Designer 
using (ListLabel LL = new ListLabel())
{
    LL.DataSource = oracleDataProvider;
    LL.Design();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡Tip: The article &lt;a href="https://forum.combit.net/t/using-the-dbcommandsetdataprovider-with-stored-procedures/5140" rel="noopener noreferrer"&gt;Using the DbCommandSetDataProvider With Stored Procedures&lt;/a&gt; shows how easy it is to access stored procedures in an Oracle database. These can then be used as data sources for reports. This also works with Oracle databases. If necessary, just use additional individual SQL statements in the process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features and Benefits of Oracle DB Reporting with List &amp;amp; Label
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Native Oracle Database Integration via ODP.NET
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: Uses Oracle’s own managed data provider (Oracle.ManagedDataAccess via NuGet).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit&lt;/strong&gt;: No need for custom drivers or data abstraction layers. Developers can connect directly to Oracle and access tables, views, stored procedures, or SQL statements.&lt;/p&gt;

&lt;h3&gt;
  
  
  OracleConnectionDataProvider in .NET
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: Exposes Oracle schema as structured objects usable in the List &amp;amp; Label reporting engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit&lt;/strong&gt;: Enables both developers and end-users to select and visualize Oracle data in a report designer interface, without manual object mapping.&lt;/p&gt;

&lt;h3&gt;
  
  
  WYSIWYG Report Designer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: GUI-based editor supports tables, charts, barcodes, crosstabs, maps, gauges, subreports and more designer objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit&lt;/strong&gt;: End-users (non-devs) can create or update report templates without needing code changes or development cycles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-format Export Engine
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: Supports PDF (including ZUGFeRD/XRechnung), Excel, Word, JSON, XML, HTML, CSV, PNG, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit&lt;/strong&gt;: Reports can be distributed via email, stored as files, embedded in documents, or printed - covering most B2B and internal reporting use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-source Support
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Advantage&lt;/strong&gt;: In addition to Oracle, it supports 30+ other data providers including MSSQL, PostgreSQL, SQLite, CSV, JSON, REST, Entity Framework, and custom objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit&lt;/strong&gt;: Developers building applications with multiple backend systems can unify reporting in one tool, without switching engines.&lt;/p&gt;




&lt;h2&gt;
  
  
  Use Cases Where It’s Relevant
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need to replace or extend legacy Oracle Reports workflows.&lt;/li&gt;
&lt;li&gt;You want to let users define their own layouts while keeping backend logic in Oracle.&lt;/li&gt;
&lt;li&gt;You’re building .NET desktop or web apps and want to embed Oracle report generation.&lt;/li&gt;
&lt;li&gt;You need to export structured Oracle data to industry formats (XLSX, PDF, JSON, etc.).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Limitations to Be Aware Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;List &amp;amp; Label is not open-source; licensing applies.&lt;/li&gt;
&lt;li&gt;It requires a .NET-based development environment.&lt;/li&gt;
&lt;li&gt;While Oracle-specific, the tool does not depend on Oracle Forms or Oracle APEX.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;If you're searching for an Oracle database reporting tool that integrates directly with Oracle via ODP.NET, supports customizable templates with an powerful designer, and works well in .NET environments, List &amp;amp; Label is one practical option.&lt;/p&gt;

&lt;p&gt;It covers typical developer needs - structured access, export options, and template control - without tying you to legacy tooling.&lt;/p&gt;

&lt;p&gt;For technical docs or API details:&lt;br&gt;
📖 &lt;a href="https://docu.combit.net/net/en/" rel="noopener noreferrer"&gt;Online .NET Help&lt;/a&gt;&lt;br&gt;
📊 &lt;a href="https://www.combit.com/" rel="noopener noreferrer"&gt;More about List &amp;amp; Label&lt;/a&gt;&lt;br&gt;
🧪 &lt;a href="https://www.combit.com/trial/" rel="noopener noreferrer"&gt;Get free List &amp;amp; Label Trial&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>software</category>
      <category>tutorial</category>
      <category>analytics</category>
    </item>
    <item>
      <title>How to Build Fillable PDF Forms in .NET — Without Fighting the PDF Beast</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Thu, 18 Sep 2025 10:03:15 +0000</pubDate>
      <link>https://dev.to/combit/how-to-build-fillable-pdf-forms-in-net-without-fighting-the-pdf-beast-1l76</link>
      <guid>https://dev.to/combit/how-to-build-fillable-pdf-forms-in-net-without-fighting-the-pdf-beast-1l76</guid>
      <description>&lt;p&gt;Create fully fillable PDF forms in .NET with the &lt;em&gt;List &amp;amp; Label&lt;/em&gt; software component — fast, simple, and without extra tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡TL;DR
&lt;/h2&gt;

&lt;p&gt;Edit existing PDF files or forms and add form elements. Or build a form from scratch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design forms visually in the report designer&lt;/li&gt;
&lt;li&gt;Use form elements (text boxes, checkboxes etc.) in the form&lt;/li&gt;
&lt;li&gt;Export directly to interactive PDF with just a few lines of C# code&lt;/li&gt;
&lt;li&gt;No Acrobat Pro, no external PDF SDKs, List &amp;amp; Label uses its onw export engine&lt;/li&gt;
&lt;li&gt;Supports compliance standards like PDF/A and ZUGFeRD e-invoices out of the box&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 See how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 Impractical and Poor PDF Files
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🤦‍♂️Problem&lt;/strong&gt;&lt;br&gt;
You export a report or form to PDF. It looks nice… but your users can’t actually use it. No fields. No checkboxes. Just a flat file.&lt;/p&gt;

&lt;p&gt;That’s frustrating for you and for your users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;😊Solution&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;List &amp;amp; Label&lt;/em&gt; fixes that. It lets you design your form visually with real, editable form elements and export it to PDF with just a few lines of code.&lt;/p&gt;
&lt;h2&gt;
  
  
  🚦 Getting Started Without the Complexity
&lt;/h2&gt;

&lt;p&gt;If you're new to .NET or just dipping your toes into working with PDF exports, List &amp;amp; Label won’t overwhelm you.&lt;/p&gt;

&lt;p&gt;You don’t need to learn PDF internals, wrestle with Acrobat, or deal with brittle third-party tools.&lt;/p&gt;

&lt;p&gt;With List &amp;amp; Label, you can design, export, and test fillable PDF forms directly from your app visually and with just a few lines of code.&lt;/p&gt;
&lt;h2&gt;
  
  
  🛠️ First Steps: Try It in Your Own Project
&lt;/h2&gt;

&lt;p&gt;Here’s how to get up and running:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Download &amp;amp; Install&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get the &lt;a href="https://www.combit.com/trial/" rel="noopener noreferrer"&gt;List &amp;amp; Label trial for free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add the NuGet package

&lt;ul&gt;
&lt;li&gt;Supports .NET Framework, .NET Core, and .NET 6–9&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Open a sample project from GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse the &lt;a href="https://github.com/combit/ll-samples" rel="noopener noreferrer"&gt;GitHub samples&lt;/a&gt; for WinForms, WPF, ASP.NET, or Blazor&lt;/li&gt;
&lt;li&gt;Pick the one that matches your stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Run &amp;amp; Explore&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the sample to see how it connects to a data source&lt;/li&gt;
&lt;li&gt;Open the Report Designer from the project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Use the Report Designer&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open a project file&lt;/li&gt;
&lt;li&gt;Drag in a text field or checkbox&lt;/li&gt;
&lt;li&gt;Save and export as PDF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now your form has fillable fields.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Export from C#&lt;/strong&gt;&lt;br&gt;
Export is just a few lines of code — no Acrobat needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ListLabel&lt;/span&gt; &lt;span class="n"&gt;LL&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ListLabel&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Define data source&lt;/span&gt;
    &lt;span class="n"&gt;LL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataSource&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;CreateDataSet&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// Creating the export configuration (the target format here is PDF)&lt;/span&gt;
    &lt;span class="n"&gt;ExportConfiguration&lt;/span&gt; &lt;span class="n"&gt;exportConfiguration&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ExportConfiguration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LlExportTarget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Pdf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;Dateipfad der PDF-Datei&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;Dateipfad der Layout-Datei&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Optional: show result&lt;/span&gt;
    &lt;span class="n"&gt;exportConfiguration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ShowResult&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Export&lt;/span&gt;
    &lt;span class="n"&gt;LL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Export&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exportConfiguration&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;6. Open your PDF and test the fields&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’ll now have a PDF your users can interact with — no printing or scanning required.&lt;/p&gt;

&lt;p&gt;And it just works.&lt;br&gt;
No third-party Acrobat software. No hand-coded layout logic. &lt;/p&gt;

&lt;p&gt;👉 You're Not Alone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Friendly &lt;a href="https://forum.combit.net/c/english/6" rel="noopener noreferrer"&gt;community forum&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Clear, well-organized &lt;a href="https://docu.combit.net/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ✅ Stay Compliant with Zero Extra Effort
&lt;/h2&gt;

&lt;p&gt;Working on invoices or anything long-term? List &amp;amp; Label supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDF/A for archival-safe documents&lt;/li&gt;
&lt;li&gt;ZUGFeRD for smart e-invoices (with structured XML baked into the PDF)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s compliance handled — no standards manual required.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬What's next?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get started with the &lt;a href="https://www.combit.com/trial/" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; now&lt;/li&gt;
&lt;li&gt;Or browse the &lt;a href="https://www.combit.blog/en/tag/pdf/" rel="noopener noreferrer"&gt;PDF section&lt;/a&gt; in the Reporting Blog to discover more feature developments around the PDF format&lt;/li&gt;
&lt;li&gt;Or leave a comment if you have any questions&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>csharp</category>
      <category>pdf</category>
      <category>softwaredevelopment</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>New Features for the Web Report Designer in List &amp; Label 28</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Mon, 13 Mar 2023 08:32:30 +0000</pubDate>
      <link>https://dev.to/combit/new-features-for-the-web-report-designer-in-list-label-28-106d</link>
      <guid>https://dev.to/combit/new-features-for-the-web-report-designer-in-list-label-28-106d</guid>
      <description>&lt;p&gt;The &lt;strong&gt;Web Report Designer&lt;/strong&gt; is a central element &lt;strong&gt;if you’re using List &amp;amp; Label in web applications&lt;/strong&gt;. We’re constantly improving and adding to it, and with the release of version 28, we’ve added many new objects and functions again. Here’s a quick overview of the new features.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Designer Objects
&lt;/h2&gt;

&lt;p&gt;The following Designer objects are now supported since version 28 – both as standalone objects and also in tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gauges, visualizing data as speedometers, thermometers, etc.&lt;/li&gt;
&lt;li&gt;Data graphics, visualizing data as pictograms&lt;/li&gt;
&lt;li&gt;Checkboxes, displaying true/false values&lt;/li&gt;
&lt;li&gt;PDFs to use as background for forms, or more complex document parts that are available as PDF files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pie Charts
&lt;/h2&gt;

&lt;p&gt;Finally, pie charts can be created directly in the Web Report Designer, and being used as standalone objects as well as in tables. In order to achieve this, a completely new editing mode has been integrated into the Web Report Designer. This editing mode can be opened directly in the workspace, just using a separate button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2la7p3zh775belm74ze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2la7p3zh775belm74ze.png" alt="pie chart in web report designer" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other chart types are already in the making, and will be gradually integrated. Our goal is to transform the Web Report Designer into a fully-fledged, browser-based replacement for the previous Windows app-based Web Designer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;

&lt;p&gt;Provide the content of your repository with more structure and clarity. Folder structures are automatically supported now, without doing changes to existing implementations. Project files, but also additional files such as images, etc., can now be created and managed right within folder structures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmftj8trgax0e2qmyvog3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmftj8trgax0e2qmyvog3.png" alt="Elements in Web Report Designer" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table Editor
&lt;/h2&gt;

&lt;p&gt;Create and move fields easily with drag &amp;amp; drop. Also, adjusting their properties got a lot easier and more convenient with the new table editor.  Currently available are text fields, images, barcodes, checkboxes and PDF files. You can also insert data graphics, gauges, and charts really quick and easy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frd34plzmy1hjbcoo51v6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frd34plzmy1hjbcoo51v6.png" alt="Table Editor Web Reports" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Export Right from the Designer
&lt;/h2&gt;

&lt;p&gt;Create your reports in the Designer and export right from there to check your layout on different output media.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyvxdyux0qidydonr52j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyvxdyux0qidydonr52j.png" alt="Export Options Web Report Designer" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Online Demo
&lt;/h2&gt;

&lt;p&gt;If you like to take a closer look at the Web Report Designer in List &amp;amp; Label check out the &lt;a href="https://www.combit.com/web-reporting-list-label/?reportRepositoryID=repository%3A%2F%2F%7B4BF96B30-2753-45ED-A4BD-4747C9977309%7D&amp;amp;dlyx_xs=mhd6vdtvblnluo18d32fip2k3g" rel="noopener noreferrer"&gt;interactive Online Demo&lt;/a&gt;.&lt;br&gt;
Or directly get the &lt;a href="https://www.combit.com/trial/" rel="noopener noreferrer"&gt;free List &amp;amp; Label trial&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>news</category>
      <category>datavisualization</category>
      <category>reportdesign</category>
    </item>
    <item>
      <title>Creating reports from MariaDB databases</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Tue, 07 Feb 2023 09:26:48 +0000</pubDate>
      <link>https://dev.to/combit/creating-reports-from-mariadb-databases-45ff</link>
      <guid>https://dev.to/combit/creating-reports-from-mariadb-databases-45ff</guid>
      <description>&lt;p&gt;Learn how to easily bind report generator List &amp;amp; Label to MariaDB data to create comprehensive reports and other output in various formats.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MariaDB?
&lt;/h2&gt;

&lt;p&gt;MariaDB is a free relational database system created from a fork of MySQL. It is compatible with MySQL in almost all respects and can thus be connected in the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating reports from MariaDB data sources
&lt;/h2&gt;

&lt;p&gt;List &amp;amp; Label can be easily bound to MariaDB data. This allows you to create comprehensive reports based on your existing MariaDB data. Relational links are also supported, allowing you to drill down or drill through your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can List &amp;amp; Label be linked to MariaDB data sources?
&lt;/h2&gt;

&lt;p&gt;Since the release of version 28 in 2022, List &amp;amp; Label  offers the &lt;code&gt;MariaDBConnectionDataProvider&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A minimal sample for using the new provider would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using MariaDBConnectionDataProvider provider = new MariaDBConnectionDataProvider(
    $"server={address};userid={userid};password={password};database={database}")
{
    using ListLabel LL = new ListLabel();
    {
        LL.DataSource = provider;
        LL.Design();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which gives the following result in the Designer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7aTASggp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2dsxv1y4p4u9v17ylt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7aTASggp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2dsxv1y4p4u9v17ylt4.png" alt="result mariaDB query in designer" width="880" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do not want to provide all but only some tables in Designer, you can also use the &lt;a href="https://docu.combit.net/net/en/combit.ListLabel~combit.Reporting.DataProviders.DbCommandSetDataProvider.html"&gt;DbCommandSetDataProvider&lt;/a&gt; to connect to MariaDB databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  More about MariaDB and List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;You can also find more valuable information about using List &amp;amp; Label in the &lt;a href="https://docu.combit.net/net/en/Tutorial.html"&gt;.NET Tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It doesn’t matter if you have a classic Windows desktop or a modern web application using ASP.NET - the List &amp;amp; Label &lt;a href="https://docu.combit.net/net/en/combit.ListLabel~combit.Reporting.DataProviders_namespace.html"&gt;data providers&lt;/a&gt; can be used in both worlds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Want to see more or try it for yourself?
&lt;/h3&gt;

&lt;p&gt;Have a look at the &lt;a href="https://www.combit.com/list-label-online-demo/"&gt;Online Demo&lt;/a&gt; or get the fully-functional &lt;a href="https://www.combit.com/trial/"&gt;List &amp;amp; Label trial&lt;/a&gt; if you want to try it yourself&lt;/p&gt;

&lt;p&gt;Please leave a reply to this post if you have any questions about creating reports with List &amp;amp; Label based on data from MariaDB databases or if you are missing information on this topic.&lt;/p&gt;

</description>
      <category>mariadb</category>
      <category>database</category>
      <category>reporting</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Miscellaneous Treats in .NET Report Generator List &amp; Label 27</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Tue, 24 May 2022 09:58:01 +0000</pubDate>
      <link>https://dev.to/combit/miscellaneous-treats-in-net-report-generator-list-label-27-2g3h</link>
      <guid>https://dev.to/combit/miscellaneous-treats-in-net-report-generator-list-label-27-2g3h</guid>
      <description>&lt;p&gt;As with every version, there are way too many new features in version 27 to cover them all. So here’s a quick summary of some of the rather hidden gems that still deserve some attention.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supporting Windows 11, Visual Studio 2022 and .NET 6&lt;/li&gt;
&lt;li&gt;Parametrized data sources now support passing a “displayformula” option in order to set the displayed value for the auto generated parameter. This allows the use ID values for the parameter itself, while displaying a user friendly substitution.&lt;/li&gt;
&lt;li&gt;The AskString$ and AskStringChoice$ dialogs are now resizable.&lt;/li&gt;
&lt;li&gt;New barcode type added: Pharmacode&lt;/li&gt;
&lt;li&gt;New image type added: SVGZ (compressed SVG)&lt;/li&gt;
&lt;li&gt;Report parameters can now be validated via a regular expression.&lt;/li&gt;
&lt;li&gt;The Drawing() function can receive a valid SVG string, which will be converted into an image on the fly, e.g. Drawing(‘’).&lt;/li&gt;
&lt;li&gt;Lines are now exported as inline SVG files, when exporting to XHTML. Line styles are also partly supported, diagonal lines are no longer raster images.&lt;/li&gt;
&lt;li&gt;The .NET component now automatically tries to decode Base64 encoded images, if they are defined e.g. via LL.Fields.Add(“MyBase64Image”, Base64String, LlFieldType.Drawing). Note: this feature requires the Base64 string to be padded to a multiple of four bytes with “=” as defined in RFC 4648.&lt;/li&gt;
&lt;li&gt;If a preview contains input objects, the ribbon now provides two different PDF modes (PDF with input objects and PDF with input data as fixed text).&lt;/li&gt;
&lt;li&gt;JPEG images with EXIF rotation information are automatically displayed correctly now.&lt;/li&gt;
&lt;li&gt;The extended properties of 2D barcodes (Aztec, QRCode, DataMatrix, PDF417, MicroPDF417, Maxicode) are now accessible via DOM.&lt;/li&gt;
&lt;li&gt;Pie charts now support a maximum segment count. All additional segments will then be summarized as “Others”. Before, there was only a minimum share, which was not flexible enough in cases where many segments had the same (small) share.&lt;/li&gt;
&lt;li&gt;The HTML object now supports https for downloads.&lt;/li&gt;
&lt;li&gt;VCL FireDac: the ExportOptions can now be set directly via the ExportOptions class.&lt;/li&gt;
&lt;li&gt;VCL FireDac: simplified variant for setting options &amp;amp; print options &lt;/li&gt;
&lt;li&gt;Crosstab label cells can now contain an image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This wraps up the feature posts on version 27 – we’ll start blogging about the upcoming version 28 pretty soon. Stay tuned!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.combit.com/version-27-list-label/"&gt;More New Features in List &amp;amp; Label 27&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>news</category>
      <category>dotnet</category>
      <category>component</category>
    </item>
    <item>
      <title>Creating Reports from Microsoft Access Databases with List &amp; Label</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Wed, 19 Jan 2022 07:30:20 +0000</pubDate>
      <link>https://dev.to/combit/creating-reports-from-microsoft-access-databases-with-list-label-38g0</link>
      <guid>https://dev.to/combit/creating-reports-from-microsoft-access-databases-with-list-label-38g0</guid>
      <description>&lt;p&gt;Create reports based on your existing Microsoft Access databases with the reporting component List &amp;amp; Label. See how it works here.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create Reports with List &amp;amp; Label Using Data from Microsoft Access Databases
&lt;/h2&gt;

&lt;p&gt;List &amp;amp; Label can be easily bound to Microsoft Access databases. This allows you to create comprehensive reports based on your existing Access data, whether it is in tables or stored procedures. Relational databases are also supported out of the box, enabling you to drill down or drill through your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Samples for Binding Microsoft Access Databases to List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;OleDbConnection&lt;/code&gt; of the .NET Framework is used as a basis, which uses the Jet OleDb driver to access the Microsoft Access database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect to Access Database
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string databasePath = @"c:\temp\Northwind.mdb";
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath;
OleDbConnection myOleDbConnection = new OleDbConnection(connStr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For 32-bit applications, the Jet OleDB driver can still be used. But for a 64-bit application, this driver reaches its limits and an alternative must be found. For this purpose, Microsoft itself offers the ACE OleDB driver, which is provided as the &lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=54920"&gt;Microsoft Access Database Engine&lt;/a&gt;. Accordingly, &lt;code&gt;connStr&lt;/code&gt; must be adapted as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string databasePath = @"c:\temp\Northwind.mdb";
string connStr = "Provider=Microsoft.Jet.ACE.OLEDB.12.0;Data Source=" + databasePath;
OleDbConnection myOleDbConnection = new OleDbConnection(connStr);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: For successful installation and registration of the ACE OleDB driver, a suitable 64-bit Office installation is required on the target system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assign Data from Microsoft Access Database to List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;Once the appropriate connection has been provided using &lt;code&gt;OleDbConnection&lt;/code&gt;, there are a number of ways to access the Microsoft Access database data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Load the Data into an ADO DataSet
&lt;/h3&gt;

&lt;p&gt;List &amp;amp; Label gets access to ADO objects with the help of the &lt;a href="https://docu.combit.net/net/de/combit.ListLabel~combit.Reporting.DataProviders.AdoDataProvider.html"&gt;AdoDataProvider&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Connect to the Microsoft Access database
string databasePath = @"c:\temp\Northwind.mdb";
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath;
OleDbConnection oleDbConn = new OleDbConnection(connStr);
oleDbConn.Open();

DataSet ds = new System.Data.DataSet();

// Add table 'Customers' to the DataSet
string sqlCustomers = "SELECT * FROM [Customers]";
OleDbCommand commandCustomers = new OleDbCommand(sqlCustomers, oleDbConn);
OleDbDataAdapter daCustomers = new OleDbDataAdapter(commandCustomers);
daCustomers.FillSchema(ds, SchemaType.Source, "Customers");
daCustomers.Fill(ds, "Customers");

// Add table 'Orders' to the DataSet
string sqlOrders = "SELECT * FROM [Orders]";
OleDbCommand commandOrders = new OleDbCommand(sqlOrders, oleDbConn);
OleDbDataAdapter daOrders = new OleDbDataAdapter(commandOrders);
daOrders.FillSchema(ds, SchemaType.Source, "Orders");
daOrders.Fill(ds, "Orders");

// Define relation between tables
string relName = "Customers2Orders";
ds.Relations.Add(new DataRelation(relName, "CustomerId", "CustomerId"));

// Create the List &amp;amp; Label object and attach the ADO DataSet
// and call the designer
using(ListLabel LL = new ListLabel())
{
    LL.DataSource = new AdoDataProvider(ds);
    LL.Design();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Load Data Directly as &lt;code&gt;IDbCommand&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;With the help of &lt;a href="https://docu.combit.net/net/en/combit.ListLabel~combit.Reporting.DataProviders.DbCommandSetDataProvider.html"&gt;DbCommandSetDataProvider&lt;/a&gt; List &amp;amp; Label has direct access to the data via IDbCommand. The advantage of this variant is that the data is not loaded into memory in advance as it is the case with the DataSet, especially with very large databases this is important:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Connect to the Microsoft Access database
string databasePath = @"c:\temp\Northwind.mdb";
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath;
OleDbConnection oleDbConn = new OleDbConnection(connStr);
oleDbConn.Open();

DbCommandSetDataProvider provider = new DbCommandSetDataProvider();

// Add table 'Customers' to the DataSet
string sqlCustomers = "SELECT * FROM [Customers]";
OleDbCommand commandCustomers = new OleDbCommand(sqlCustomers, oleDbConn);
provider.AddCommand(commandCustomers, "Customers");

// Add table 'Orders'
string sqlOrders = "SELECT * FROM [Orders]";
OleDbCommand commandOrders = new OleDbCommand(sqlOrders, oleDbConn);
provider.AddCommand(commandOrders , "Orders");

// Define relation between tables
string relName = "Customers2Orders";
provider.AddRelation(relName, "Customers", "Orders", "CustomerID", "CustomerID");

// Create the List &amp;amp; Label object and attach the ADO DataSet
// and call the designer
using(ListLabel LL = new ListLabel())
{
    LL.DataSource = provider;
    LL.Design();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  More about Microsoft Access Reporting and List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;Also see the &lt;a href="https://docu.combit.net/net/en/Tutorial.html"&gt;.NET Tutorial&lt;/a&gt; for even more valuable information on using List &amp;amp; Label.&lt;/p&gt;

&lt;p&gt;It doesn’t matter if you have a classic Windows desktop application or a modern web application with ASP.NET - the List &amp;amp; Label &lt;a href="https://docu.combit.net/net/en/combit.ListLabel~combit.Reporting.DataProviders_namespace.html"&gt;data providers&lt;/a&gt; can be used in both worlds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; The installation of List &amp;amp; Label already delivers numerous programming samples that use Microsoft Access databases as data sources. These can also be viewed in our &lt;a href="https://github.com/combit/ll-samples"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Please leave a reply to this post if you’ve got questions about how to create reports with List &amp;amp; Label based on data from Microsoft Access databases or if you miss any information about this topic.&lt;/p&gt;

&lt;p&gt;If you already enjoy connecting Microsoft Access databases as datasource to List &amp;amp; Label for creating amazing reports, feel free to show your love with a heart for this post. 💖 🙂&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>dotnet</category>
      <category>tools</category>
    </item>
    <item>
      <title>Creating Charts via Drag &amp; Drop in the Desktop Designer</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Tue, 18 Jan 2022 13:47:04 +0000</pubDate>
      <link>https://dev.to/combit/creating-charts-via-drag-drop-in-desktop-designer-3214</link>
      <guid>https://dev.to/combit/creating-charts-via-drag-drop-in-desktop-designer-3214</guid>
      <description>&lt;p&gt;&lt;strong&gt;tl;dr List &amp;amp; Label is a reporting component for software developers and improved the Drag &amp;amp; Drop support for charts in the desktop designer. Check out the example below to see how it works.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.combit.com/" rel="noopener noreferrer"&gt;List &amp;amp; Label’s&lt;/a&gt; chart dialog offers a load of possible customizations. However, as always, with great power comes great complexity. Even creating a simple pie chart could have taken some time if you’re not yet familiar with List &amp;amp; Label’s chart features. As you can already easily create crosstabs via Drag &amp;amp; Drop, and we just recently improved the table’s drag &amp;amp; drop features, offering a thorough D&amp;amp;D support for charts was the next logical step on our path to a simpler, more intuitive end user desktop designer.&lt;/p&gt;

&lt;p&gt;For a quick walkthrough, let’s start with a simple pie chart in our demo application – the distribution of customers by country. Simply drag the Customers.Country field to the workspace and drop it there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd02bcumxwd7fl02fvm7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd02bcumxwd7fl02fvm7a.png" alt="drag and drop field" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This brings up the following choices:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx8qj9krsdbrqrc024f2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx8qj9krsdbrqrc024f2.png" alt="chart dialogue" width="542" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note the last entry, which is new to List &amp;amp; Label 27. In the next step, you choose the chart type directly in the workspace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidk0vwo4vv6n1oj6q0zd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidk0vwo4vv6n1oj6q0zd.png" alt="choose chart type" width="557" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we’re happy with the default for this case – that’s all. The preview shows the result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5sxwtj3t1zftnpl2a50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5sxwtj3t1zftnpl2a50.png" alt="chart result" width="405" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a more complicated example, let’s compare the sales for the different regions EMEA, NAFTA and APAC through the years. To create this, just drag Sales.Year and drop it on the workspace. Choose “Bar” and “Clustered”. As we already have aggregated values in the EMEA, NAFA and APAC fields of the database, we want to create the values by series. So let’s choose this.&lt;/p&gt;

&lt;p&gt;Now, simply create the series by dropping the APAC, EMEA and NAFTA fields into the designated area. After that, here’s what the workspace looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fga3vvq5uggg66wv2q9zn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fga3vvq5uggg66wv2q9zn.png" alt="bar chart workspace" width="553" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, you still need to tweak sometimes – as for example, the years have two digits here, as they aren’t integer fields in the database. Of course, the dialog with all its properties is always still available to the rescue. Simply double-click the chart to bring up the dialog. Take note of the new, (hopefully) helpful tooltip while you’re there:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizfhkbyd1zzoi92leyfv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizfhkbyd1zzoi92leyfv.png" alt="tool tip" width="352" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ve added these to a number of places to highlight often overlooked features. You can immediately apply this new knowledge and click on one of the year labels in the dialog’s preview, in order to get to the coordinate value and edit its format property:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog5iayx18nqwnto1b55n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog5iayx18nqwnto1b55n.png" alt="edit format" width="732" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which (after doing the same tweak for the y-Axis) results in:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r8vbgzgb2gaulgtswgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6r8vbgzgb2gaulgtswgq.png" alt="bar chart result" width="531" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’re pretty sure this new feature makes the creation of your charts much easier and intuitive.&lt;/p&gt;

&lt;p&gt;Visit our &lt;a href="https://www.combit.blog/en/" rel="noopener noreferrer"&gt;Reporting Blog&lt;/a&gt; to find out more about topics that keep us busy.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>reporting</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Creating EPC Barcodes with Report Generator List &amp; Label</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Thu, 28 Oct 2021 12:20:47 +0000</pubDate>
      <link>https://dev.to/combit/creating-epc-barcodes-with-report-generator-list-label-4af1</link>
      <guid>https://dev.to/combit/creating-epc-barcodes-with-report-generator-list-label-4af1</guid>
      <description>&lt;h2&gt;
  
  
  What is an EPC Barcode?
&lt;/h2&gt;

&lt;p&gt;An EPC QR code is a data format standardized by the European Payments Council that contains all the data for a SEPA credit transfer and is machine-readable via QR coding. A brief description of the format can be found here:&lt;/p&gt;


&lt;div class="ltag__wikipedia--container"&gt;
  &lt;div class="ltag__wikipedia--header"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fwikipedia-logo-0a3e76624c7b1c3ccdeb9493ea4add6ef5bd82d7e88d102d5ddfd7c981efa2e7.svg" class="ltag__wikipedia--logo" alt="Wikipedia Logo" width="800" height="400"&gt;
    &lt;a href="https://en.wikipedia.org/wiki/EPC_QR_code" rel="noopener noreferrer"&gt;EPC QR code&lt;/a&gt;
  &lt;/div&gt;
  &lt;div class="ltag__wikipedia--extract"&gt;&lt;p&gt;The &lt;b&gt;European Payments Council&lt;/b&gt; (&lt;b&gt;EPC&lt;/b&gt;) &lt;b&gt;Quick Response&lt;/b&gt; (&lt;b&gt;QR&lt;/b&gt;) &lt;b&gt;code&lt;/b&gt; is a technical standard by the European Payments Council. It uses a QR code containing all the necessary information for initiating a SEPA credit transfer (SCT). It is commonly used on invoices and payment requests in the countries that support it.&lt;/p&gt;&lt;/div&gt;
  &lt;div class="ltag__wikipedia--btn--container"&gt;
      &lt;a class="ltag__wikipedia--btn" href="https://en.wikipedia.org/wiki/EPC_QR_code" rel="noopener noreferrer"&gt;View on Wikipedia&lt;/a&gt;&amp;gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Procedure - How to Create Barcodes With List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;With List &amp;amp; Label you can easily create such a barcode by encoding the content according to the standard. A formula for such a barcode would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Barcode(
/* Service tag */
"BCD"+chr$(13)+
/* Version */
"002"+chr$(13)+
/* Character set */
"2" +chr$(13)+
/* SEPA Credit Transfer */
"SCT" +chr$(13)+
/* Recipient's BIC */
"GENODE61RAD"+chr$(13)+
/* Recipient's name */
"combit GmbH"+chr$(13)+
/* Recipient's IBAN */
"DE36692910000214809206"+chr$(13)+
/* Amount */
"EUR0.01"+chr$(13)+
/* Purpose, optional */
"CHAR" +chr$(13)+
/* Reference */
"" +chr$(13)+
/* Reason */
"Charity for combit"+chr$(13)+
/* Hint */
"Hint", 
"QRCode"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting barcode can then be scanned in all common applications:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1ybebtquvegmb69xatx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1ybebtquvegmb69xatx.png" alt="example epc barcode" width="160" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, please leave a comment. &lt;br&gt;
Want to test it yourself? Get a &lt;a href="https://www.combit.com/trial/" rel="noopener noreferrer"&gt;free trial of List &amp;amp; Label&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>learning</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Revisiting C# Script Performance</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Wed, 13 Oct 2021 14:18:02 +0000</pubDate>
      <link>https://dev.to/combit/revisiting-c-script-performance-4p7k</link>
      <guid>https://dev.to/combit/revisiting-c-script-performance-4p7k</guid>
      <description>&lt;p&gt;This is another often overlooked feature in our &lt;a href="https://www.combit.com/"&gt;reporting tool List &amp;amp; Label&lt;/a&gt;  – &lt;strong&gt;you can add scripts to your projects and use your favorite language to do so&lt;/strong&gt;. Since a couple of versions already, List &amp;amp; Label supports C# Scripts. However, the performance was less than perfect, making it a good choice for complex calculations but not so much for using it on a line-to-line base. In List &amp;amp; Label 26, we were able to push the performance quite remarkably – now using scripts is perfectly feasible.&lt;/p&gt;

&lt;p&gt;One reason why many people overlook the scripting feature is that it is opt-in. For security reasons, we decided to default the availability to false. Switching it on is just a matter of setting the option LL_OPTION_SCRIPTENGINE_ENABLED (index 276) to 1. Let’s do a quick walkthrough, using the “order list with scripting” sample report of the demo application. It displays the order number, order and delivery date and a script-powered calculation of the number of working days between those two dates. &lt;/p&gt;

&lt;p&gt;The last column in the report just reads:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ScriptVal ("CSharpScript", LoadFile$ (ProjectPath$() + "WorkingDays.cs"))&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;That means, load the WorkingDays.cs script from within the project path and return its value. So let’s dig into the script. The crucial part is the Main() method:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;static void Main()&lt;br&gt;
{&lt;br&gt;
var workDayCalc = new WorkingDaysCalculator();&lt;br&gt;
WScript.Result = workDayCalc.Calculate(Report.Field("Orders.OrderDate"), Report.Field("Orders.ShippedDate"));&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The WorkingDaysCalculator is just a simple class to calculate the working days in a quite simple manner. The more interesting part is the usage of the Report object that’s added dynamically. It has a couple of methods:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method name&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Eval&lt;/td&gt;
&lt;td&gt;Evaluates a full List &amp;amp; Label formula, based on the provided fields and variables at the time of evaluation-aligned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;td&gt;Gets the value of a variable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field&lt;/td&gt;
&lt;td&gt;Gets the value of a field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SetVar&lt;/td&gt;
&lt;td&gt;Sets a variable in the report that can later be retrieved by using GetVar() outside of the script&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetVar&lt;/td&gt;
&lt;td&gt;Gets a variable from the report that was set earlier by using SetVar() outside of the script&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Using these methods, you can easily interact with the report and your data. And by setting WScript.Result, you can return a value for the ScriptVal function as shown above. &lt;/p&gt;

&lt;p&gt;Additionally, there is also the possibility of debugging your scripts. All you have to do is add the line&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;!--#pragma debugmode--&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;at the very beginning of the script. This will automatically include the following code at the start of the Main() method which will start a suitable debugger (if there is one installed on your system), attach it to the LL process, and break before any of the actual code gets executed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System.Diagnostics.Debugger.Launch();
if (System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Break();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looking forward to seeing more usage of this hidden gem in the future :-).&lt;/p&gt;

&lt;p&gt;Please leave a comment if you have any questions. Or just visit our &lt;a href="https://www.combit.blog/en/"&gt;blog&lt;/a&gt; to get to know us a bit better.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>coding</category>
      <category>reporting</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Create Reports from SQL Server Databases with List &amp; Label to Have More Time for ...hm, Let's Say, Sweets 🍭</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Tue, 28 Sep 2021 15:02:58 +0000</pubDate>
      <link>https://dev.to/combit/how-to-create-reports-from-sql-server-databases-with-list-label-to-have-more-time-for-hm-let-s-say-sweets-4lb</link>
      <guid>https://dev.to/combit/how-to-create-reports-from-sql-server-databases-with-list-label-to-have-more-time-for-hm-let-s-say-sweets-4lb</guid>
      <description>&lt;p&gt;TL;DR – Create reports based on your existing SQL databases with the reporting component &lt;em&gt;List &amp;amp; Label&lt;/em&gt;. Easy to bind, support of relational databases, Report Designer included. Get yourself a chocolate bar and see how it works. 🍫&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create Reports with List &amp;amp; Label Using Data from SQL Server Databases
&lt;/h2&gt;

&lt;p&gt;List &amp;amp; Label can easily be bound to SQL server data. This allows the creation of comprehensive reports based on your existing SQL databases like viewes, tables and stored procedures. Relational databases are also supported out of the box, enabling you to drill down or drill through your data. A complete walkthrough is available in the following video (3 min).&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate Reports from SQL Database – Shown by Jochen
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/S9-W8ll2cE8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Samples for Binding SQL Databases to List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;More technically, the classes involved are the &lt;a href="https://www.combit.net/go?3119"&gt;SqlConnectionDataProvider&lt;/a&gt; to get the whole database or the &lt;a href="https://www.combit.net/go?3120"&gt;DbCommandSetDataProvider&lt;/a&gt; to execute individual SQL commands as needed. A simple sample would be…&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// Part 1: Prepare connection information for the Microsoft SQL database&lt;br&gt;
SQLConnectionStringBuilder sqlConnectionString = new SQLConnectionStringBuilder();&lt;br&gt;
sqlConnectionString.DataSource = Properties.Resources.SQLServerInstanceName;&lt;br&gt;
sqlConnectionString.UserID = Properties.Resources.SQLServerUsername;&lt;br&gt;
sqlConnectionString.Password = Properties.Resources.SQLServerPassword;&lt;br&gt;
sqlConnectionString.InitialCatalog = "Northwind";&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;p&gt;&lt;code&gt;// Part 2: Connect the SQL connection to the matching&lt;br&gt;
// List &amp;amp; Label data provider for SQL connections&lt;br&gt;
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString.ConnectionString);&lt;br&gt;
SqlConnectionDataProvider sqlDataProvider = new SqlConnectionDataProvider(sqlConnection);&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;p&gt;&lt;code&gt;// Part 3: Create the List &amp;amp; Label object and attach the SQL data provider&lt;br&gt;
// and call the designer&lt;br&gt;
using(ListLabel LL = new ListLabel())&lt;br&gt;
{&lt;br&gt;
    LL.DataSource = sqlDataProvider;&lt;br&gt;
    LL.Design();&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;… which opens the Designer automatically filled with the data from the database given in the connection string. From here, you can then proceed with one of our &lt;a href="https://www.combit.net/go?3121"&gt;Designer tutorials&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt;: The article &lt;a href="https://www.combit.net/go?3122"&gt;Using the DbCommandSetDataProvider With Stored Procedures&lt;/a&gt; shows how easy it is to access stored procedures in an SQL database and use them as data sources for reports.&lt;/p&gt;

&lt;h2&gt;
  
  
  More about SQL Reporting and List &amp;amp; Label
&lt;/h2&gt;

&lt;p&gt;Also see the &lt;a href="https://www.combit.net/go?3123"&gt;.NET Tutorial&lt;/a&gt; for even more valuable information on using List &amp;amp; Label.&lt;/p&gt;

&lt;p&gt;It doesn’t matter if you have a classic Windows desktop application or a modern web application with ASP.NET - the List &amp;amp; Label &lt;a href="https://www.combit.net/go?3124"&gt;data providers&lt;/a&gt; can be used in both worlds.&lt;/p&gt;

&lt;p&gt;Please leave a reply to this post if you’ve got questions about how to create reports with List &amp;amp; Label based on data from SQL databases or if you miss any information about this topic.&lt;/p&gt;

&lt;p&gt;If you already enjoy connecting SQL databases as datasource to List &amp;amp; Label for creating amazing reports, feel free to show your love with a like and take a doughnut 🍩&lt;/p&gt;

</description>
      <category>sqlserver</category>
      <category>listlabel</category>
      <category>sql</category>
      <category>reporting</category>
    </item>
    <item>
      <title>How We Release a New Version 🔄</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Wed, 28 Jul 2021 13:32:50 +0000</pubDate>
      <link>https://dev.to/combit/how-we-release-a-new-version-4h0i</link>
      <guid>https://dev.to/combit/how-we-release-a-new-version-4h0i</guid>
      <description>&lt;p&gt;Every October we release a new version of our reporting component for developers named &lt;strong&gt;List &amp;amp; Label&lt;/strong&gt;. You can imagine what it's like the weeks before the release: time pressure and frustration one minute, relief and joy the next. So far, we've always made it so we could rightfully celebrate our little release party afterwards. Good thing, because a non-release party isn't that funny 😋. &lt;/p&gt;

&lt;p&gt;Anyway, I'd like to share some insights into what happens as we shift near Release to Manufacturing.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Stage – Alpha Version
&lt;/h2&gt;

&lt;p&gt;The first stage of our release cycle is the release of our Alpha version used by some key partners and customers to adapt their additions to List &amp;amp; Label. The Alpha provides a first metric for the stability of the coming version. This milestone is usually achieved by the end of July. Based on the Alpha feedback we are able to fine-tune some of the features and make it to the public beta program in early September.&lt;/p&gt;

&lt;p&gt;By that time, we already had fixed some 500 tickets in the &lt;strong&gt;Redmine ticketing system&lt;/strong&gt; which we're using as bug management tool. BTW – if you're also using Redmine make sure to check out the free reporting solution for Redmine we've donated to the community a couple of years ago. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/combit" rel="noopener noreferrer"&gt;
        combit
      &lt;/a&gt; / &lt;a href="https://github.com/combit/RedmineReports" rel="noopener noreferrer"&gt;
        RedmineReports
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Reporting support for the popular Redmine ticketing system. Fully fledged report designer and comprehensive sample report included.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;RedmineReports&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;This repository contains the RedmineReports tool that offers reporting support for the popular Redmine ticketing system. The fully fledged &lt;strong&gt;List &amp;amp; Label Report Designer&lt;/strong&gt; and a comprehensive sample report are included.&lt;/p&gt;
&lt;p&gt;The latest version can be downloaded &lt;a href="https://github.com/combit/RedmineReports/releases/latest" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/combit/RedmineReports/blob/main/Images/RedmineReports.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fcombit%2FRedmineReports%2Fraw%2Fmain%2FImages%2FRedmineReports.png" alt="RedmineReports"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/combit/RedmineReports/blob/main/Images/RedmineReports_Designer.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fcombit%2FRedmineReports%2Fraw%2Fmain%2FImages%2FRedmineReports_Designer.png" alt="RedmineReports Designer"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Execution and Compilation&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;RedmineReports uses the MySql .NET Connector from Oracle.&lt;/p&gt;
&lt;p&gt;For execution you will need to download the precompiled &lt;em&gt;MySql.Data.dll&lt;/em&gt; contained in the &lt;em&gt;Source Code ZIP Archive&lt;/em&gt; in version 9.1.0 (for the latest release of RedmineReports) from the &lt;a href="https://dev.mysql.com/downloads/connector/net/" rel="nofollow noopener noreferrer"&gt;MySQL Community Downloads&lt;/a&gt; website and to extract it into the RedmineReports folder.&lt;/p&gt;
&lt;p&gt;For compilation, a List &amp;amp; Label installation is required (see below where to get it). The project itself uses the corresponding NuGet package &lt;em&gt;MySql.Data&lt;/em&gt;, therefore no additional download is required.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Designer Manual&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A comprehensive manual on the List &amp;amp; Label Report Designer is also available:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt; &lt;a href="https://docu.combit.net/designer/en/" rel="nofollow noopener noreferrer"&gt;Online&lt;/a&gt;, &lt;a href="https://www.combit-support.net/docs/ll/en/combit-listlabel-designer-manual.pdf" rel="nofollow noopener noreferrer"&gt;PDF&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;German:&lt;/strong&gt; &lt;a href="https://docu.combit.net/designer/de/" rel="nofollow noopener noreferrer"&gt;Online&lt;/a&gt;, &lt;a href="https://www.combit-support.net/docs/ll/de/combit-listlabel-designer-handbuch.pdf" rel="nofollow noopener noreferrer"&gt;PDF&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Contributions&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;We're happy to receive…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/combit/RedmineReports" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This is what our progress looks like for the last 60 days before the release of version 26 in October 2020:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxov53alm3h8vt9m3fpg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxov53alm3h8vt9m3fpg.png" alt="redmine tickets release" width="567" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, my will to keep the number of open tickets at or below 100 is a bit pathological 😉. This is a fact that's known by the whole team and everyone acts accordingly. We're now starting to burn down rapidly to reach the zero-bug-count in time with the end of the beta phase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beta Phase – Code Freeze
&lt;/h2&gt;

&lt;p&gt;In the second phase, the beta version is released to all our Enterprise Edition subscribers. This offers ample opportunity to see if our latest bits still work nicely in your own application. We're getting loads of useful feedback through this channel and even get an opportunity to shape the final touches of newly added features.&lt;/p&gt;

&lt;p&gt;During the beta phase we've hit the code freeze for UI resources. Translation takes some time and we're releasing List &amp;amp; Label in a number of languages (English, German, French, Italian, Spanish and Chinese). These "core" languages are being translated by a professional translation service. Other languages are provided by selected partners and customers and may become available shortly after release.&lt;/p&gt;

&lt;p&gt;The actual code freeze is just after the end of the beta phase. We only fix killer bugs after this milestone, and only on a peer-peer-review base.&lt;/p&gt;

&lt;p&gt;Of course we run an intense and thorough in-house beta test in addition to our external beta program. This internal process is repeated for each sprint in our agile planning process to enable incremental releases at any stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Builds and Tests
&lt;/h2&gt;

&lt;p&gt;Manual testing is complemented by automated tests. Both UI and reporting engine are subject to automated testing for most of our nightly builds. The builds and tests are fully automated by our CI server – we use &lt;strong&gt;TeamCity&lt;/strong&gt; for that purpose. We use commercial tools as well as validation tools we've created just for this purpose. The main reporting engine tests consist of several hundred reports which are run by the engine and validated against references. Each deviation from the reference files is automatically reported and raises yet another ticket in Redmine. The QA process also includes performance tests to make sure there are no latencies induced by accident. This way we have been able to provide high quality releases with the most recent versions.&lt;/p&gt;

&lt;p&gt;This is a view of our TeamCity project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51kvlcxkbm30gnqcu6sj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51kvlcxkbm30gnqcu6sj.png" alt="list label TeamCity ProjectText" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the last List &amp;amp; Label 26 Core build failed. The reason was a failed regression test that can easily be verified by looking at the build's artifacts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbt1olvfy2vrque1o1lrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbt1olvfy2vrque1o1lrp.png" alt="TeamCity Artifacts" width="419" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The file itself is a "before/after" comparison of the last build's output vs. the stored reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-Up
&lt;/h2&gt;

&lt;p&gt;So this is how we've headed towards our 26th version. Despite the pandemic craze and everyone still working from home, we've been able to stick to our usual processes.&lt;/p&gt;

&lt;p&gt;We've come a long way since the initial release of List &amp;amp; Label back in 1992 when the tool was born out of the need for a professional reporting component to use with combit's &lt;a href="https://www.combit.net/crm-software/" rel="noopener noreferrer"&gt;CRM applications&lt;/a&gt; (click only if you understand German 😊, it's only made for this market). Our great team has grown through the years to offer professional services you've come to expect from us. Thanks to everyone involved in-house as well as all of our faithful customers. It's been a pleasure to work with you through the last 26 versions, and I'm looking forward to yet another great release very soon.&lt;/p&gt;

&lt;p&gt;If you are interested in the features we've developed for our reporting tool, you can check out the &lt;a href="https://www.combit.com/version-26-of-list-label-report-server/" rel="noopener noreferrer"&gt;development history&lt;/a&gt; (sorry for the German learners, this page is in English again).&lt;/p&gt;

</description>
      <category>development</category>
      <category>learning</category>
      <category>devjournal</category>
      <category>listlabel</category>
    </item>
    <item>
      <title>How to Find the Best Reporting Tool for Your Application</title>
      <dc:creator>Pius Richter</dc:creator>
      <pubDate>Wed, 21 Jul 2021 12:39:40 +0000</pubDate>
      <link>https://dev.to/combit/how-to-find-the-best-reporting-tool-for-your-application-24k</link>
      <guid>https://dev.to/combit/how-to-find-the-best-reporting-tool-for-your-application-24k</guid>
      <description>&lt;p&gt;Naturally, it depends on your requirements, what reporting tool would be the right fit for you. First of all, you need to decide if you want to go with a purchased product. Another option is to develop the required functionalities yourself. Depending on the nature of your application, this could be the most feasible and flexible solution. Just remember: for all further enhancements, new technologies and support requests, it’s up to you to deal with it. In most cases it makes a lot of sense to consider a professional component. &lt;/p&gt;

&lt;p&gt;To answer the build or buy question this post might be helpful:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/combit" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lHmCDxDd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--ZLS92_Zm--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/4285/eb6d8763-aea8-4331-8097-3b0f9c030af8.jpg" alt="combit Software"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--59dVNLX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--pqumEPPp--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/647021/6130c7b2-1f77-4188-ad08-0c0fd19c431d.png" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/combit/reporting-functions-for-your-application-build-or-buy-3h4o" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Reporting Functions for Your Application – Build or Buy?&lt;/h2&gt;
      &lt;h3&gt;Pius Richter for combit Software ・ Jun 30 ・ 4 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#csharp&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#dotnet&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  First of all: lists and comparisons
&lt;/h2&gt;

&lt;p&gt;To get an overview of reporting tools check...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the following Wikipedia list (but be careful, it's a mixture of different categories of reporting tools - one important difference is explained under point 1 below)&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag__wikipedia--container"&gt;
  &lt;div class="ltag__wikipedia--header"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sew3uq9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/wikipedia-logo-0a3e76624c7b1c3ccdeb9493ea4add6ef5bd82d7e88d102d5ddfd7c981efa2e7.svg" class="ltag__wikipedia--logo" alt="Wikipedia Logo"&gt;
    &lt;a href="https://en.wikipedia.org/wiki/List_of_reporting_software" rel="noopener noreferrer"&gt;List of reporting software&lt;/a&gt;
  &lt;/div&gt;
  &lt;div class="ltag__wikipedia--extract"&gt;&lt;p&gt;The following is a list of notable report generator software. Reporting software is used to generate human-readable reports from various &lt;span class="mw-disambig"&gt;data sources&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;
  &lt;div class="ltag__wikipedia--btn--container"&gt;
    
      &lt;a href="https://en.wikipedia.org/wiki/List_of_reporting_software" rel="noopener noreferrer"&gt;View on Wikipedia&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/search?term=.NET%20Reporting%20Component&amp;amp;target=VS&amp;amp;category=Tools&amp;amp;vsVersion=&amp;amp;subCategory=All&amp;amp;sortBy=Relevance"&gt;VS Marketplace&lt;/a&gt; if it suits your project (e.g. search for .NET reporting component)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;or this detailed &lt;a href="https://www.combit.com/reporting-tools-comparison/"&gt;reporting tool comparison&lt;/a&gt; of integrable reporting components &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to find the best reporting tool for your project
&lt;/h2&gt;

&lt;p&gt;Anyway, with these &lt;strong&gt;8 guiding questions&lt;/strong&gt;, you will find the best match.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Integrated or out-of-the-box?
&lt;/h2&gt;

&lt;p&gt;Picking an integrated solution means that it will need to be embedded into your application’s source code. For the most part, a few lines of code are sufficient to do so. This provides you with maximum flexibility to tailor reports, invoices, lists and labels to your customers’ needs.&lt;/p&gt;

&lt;p&gt;If you’re looking for a solution which is ready to go right away and doesn’t require any changes to your application, then a server based reporting tool would be a good fit. Here, the market offers whatever your heart desires, from sophisticated BI Suites to Open Source software for the smaller budget. The big advantage is, it works platform independently, is easy to scale and offers automatic reporting functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What kind of IDE will be used?
&lt;/h2&gt;

&lt;p&gt;In case you want to integrate the component into your application, it needs to support the programming language and IDE. Just a quick note: if you’re a .NET developer, you’re spoiled for choice. Most components are specialized for the Microsoft Framework. For Delphi, Java or C++, the choices are considerably smaller. Therefore, the tools that support different IDEs and programming languages, offer great benefits. Even if you switch to a different language, your reporting templates can be taken over – under the condition that you’re using the same data structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What kind of data sources need to be connected?
&lt;/h2&gt;

&lt;p&gt;Do you want to connect the tool to SQL based data sources like MS SQL Server, MySQL or Oracle? Are file-based data sources like JSON, XML or Excel important for you? Your reporting tool of choice should include the right data providers for every database. If this is not granted, you will run exactly into the problem you wanted to avoid from the beginning: you would have to do some coding yourself.&lt;/p&gt;

&lt;p&gt;Not to forget the administrative rights. Is every end user supposed to access all data? Or would you want to pre-configure the constellations? If required, make sure you choose a tool that offers you control over user rights and selection and combination of data.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Freedom of design – what do you want your customers to have?
&lt;/h2&gt;

&lt;p&gt;A reporting tool provides a designer to create the desired reports. Some providers even allow you to forward the designer to your end users – in some cases even royalty free. If you deploy the designer to your end customers, or if you prefer to offer template design and customization as a service, is completely up to you. In case of redistribution, ask yourself the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which functions do you want to offer? Would you provide the designer in a simplified version, or including the full range of possibilities?&lt;/li&gt;
&lt;li&gt;Do you want to offer different languages for the dialogs? What about special barcode formats or filters?&lt;/li&gt;
&lt;li&gt;What kind of templates do your customers need to reach the best-possible end results?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Visualization – what about the looks?
&lt;/h2&gt;

&lt;p&gt;The visual aspect is the most important function a reporting tool has. It strongly determines your reports’ aesthetics and impression. Make sure to compare what different tools have to offer in regards to visual effects. Create a list with must-haves and nice-to-haves in regards of formats. For your information: a powerful reporting tool offers the following possibilities:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E08amIFZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/obw2rpu2iublmh3balja.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E08amIFZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/obw2rpu2iublmh3balja.jpg" alt="Visualize data"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Charts (including Gantt, treemap, gauges….)&lt;/li&gt;
&lt;li&gt;Tables/Cross tables/nested tables&lt;/li&gt;
&lt;li&gt;Interactive functions like drill down, as well as drop down areas and sorting options&lt;/li&gt;
&lt;li&gt;Maps/Shapefiles&lt;/li&gt;
&lt;li&gt;Side by side reports&lt;/li&gt;
&lt;li&gt;Royalty free barcode formats&lt;/li&gt;
&lt;li&gt;Numerous supported image formats&lt;/li&gt;
&lt;li&gt;Support for PDF contents&lt;/li&gt;
&lt;li&gt;Formula functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a lot more that could be added to this list. For more detailed information, have a look at the reporting tools comparison linked at the end of this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What’s your applications’ focus?
&lt;/h2&gt;

&lt;p&gt;Do you primarily need printing functions? Enhanced options for export? Or do you rather focus on presentations and redistribution? Usually, a reporting tool covers all of these areas. It’s important though to thoroughly compare the manufacturers’ choices regarding export formats, since they vary quite a bit, and you would not want to end up having to manually convert your reports. Another thing to consider is your application’s deployment: a tool providing xcopy-deployment, or a redistribution wizard, guarantees a way easier redistribution process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7auCEwCf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkrfr86gpyfrrn7axs18.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7auCEwCf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkrfr86gpyfrrn7axs18.jpg" alt="export formats"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. What about support services?
&lt;/h2&gt;

&lt;p&gt;Imagine you’re just finished with the integration of a reporting component into your application, and all of a sudden you’re running into a problem and don’t know what to do. Quick and qualified support assistance is key, preferably by the manufacturer itself. Wherever you’re planning on buying your tool, make sure the manufacturer offers easy accessible inhouse-support. Additionally, you will find large and well-established developer communities built around successful products and their manufacturers. It gives you a chance to network with the combit support team, as well as with other developers, to exchange information and to benefit from the community’s knowledge and experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. What about licensing conditions and price-performance ratio? How do I avoid hidden costs?
&lt;/h2&gt;

&lt;p&gt;Sometimes it can be very difficult to get a grip on actual costs for a tool in advance. There might be additional costs for designer runtime fees, for new modules, support and maintenance. It’s often very difficult to compare licensing models and price structures of different software providers. Be safe. Describe your very individual scenario and receive a quote which is tailored to your needs. This is also a great opportunity to find out about response times and flexibility of each provider. Ask for possible hidden or added costs, and balance your benefits against your expenses. One thing is the same for all solutions: the more efficient all functionalities can be used, the faster your expenses will be amortised. Therefore, it makes sense to check if you can use some of the included features to replace other solutions you’re using and paying – i.e. a PDF generator, or a barcode tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  To sum it up:
&lt;/h2&gt;

&lt;p&gt;With the 8 questions above we hopefully have been able to provide helpful hints to start your quest for a suitable reporting solution. For your next step in your research we can offer you a detailed &lt;a href="https://www.combit.com/reporting-tools-comparison/"&gt;reporting tool comparison&lt;/a&gt; that helps you find the best developer component for your app.&lt;br&gt;
If you want to compare broader and need another overview, we recommend the reporting software list on Wikipedia (see link at the top of this post).&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>programming</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
