Creació informes - introducció
Per a crear un informe tenim diverses opcions:
1.- Crear un informe des de zero.
2.- Utilitzar eines del mercat pel desenvolupament d'informes.
3.- Exportar les dades a algun sistema amb opcions de llistats
En el nostre cas el que farem és desenvolupar un informe utilitzant SAP Crystal Reports.
SAP Crystal reports
SAP Crystal Reports és una eina que s'integra al IDE de Visual Studio i que ens permet dissenyar un llistat utilitzant eines gràfiques. Això vol dir que partim d'una sèrie d'eines ja fetes que ens proporcionen una informació determinada i hem d'aprendre com utilitzar aquestes eines.
Aquesta eina permet també la inclusió de codi per si cal afegir alguna prestació "nova" en el llistat.
Preparació de l'entorn
Per a crear el nostre llistat d'exemple utilitzarem les següents eines:
1.- SAP Crystal Reports
2.- Servidor MySQL amb connexió remota habilitada
3.- ODBC per accés a les dades
Nota: Tot i que hi hagi alternatives millors que ODBC en el mercat (ADO.NET, OLEDB, ...) utilitzem ODBC per a simplificar el màxim l'accés a les dades i poder-nos centrar en el llistat i no en l'accés a dades.
Instal·lació SAP Crystal reports
El primer que haurem de fer és descarregar-nos el paquet que ens incorpora les eines de SAP Crystal Reports. Podem fer la descàrrega des de la plana web:
http://www.crystalreports.com/crystal-reports-visual-studio/
Caldrà indicar al correu i accedir a la plana de descàrrega de producte. Polsarem sobre el botó amb el nom: "Installation package for Visual Studio IDE" i s'iniciarà la descàrrega de forma automàtica .
Executem el fitxer descarregat. Simplement haurem d'acceptar la llicència i podem configurar la resta d'opcions amb el seu valor per defecte.
Video - instal·lació del software
Creació del projecte
Si el programa "SAP Crystal reports" s'ha instal·lat de forma correcte, ha d'aparéixer la possibilitat de poder generar projectes de tipus Video - Creació projecte de reports amb WPF
Connexió amb el sistema de base de dades
Una vegada creat el projecte és necessari enllaçar el nostre informe amb les taules que contenen la informació a visualitzar. Com a sistema de base de dades utilitzarem el servidor de base de dades MySQL.
Acceptació connexions remotes
El sistema de base de dades MySQL/MariaDB no permet la connexió des d'equips remots amb la seva configuració bàsica. Donat que la connexió a la base de dades es farà des d'un equip diferent al servidor de base de dades, és necessari canviar la configuració del servidor MySQL/MariaDB i autoritzar la connexió des d'equips remots. Per a permetre les connexions remotes haurem de modificar el paràmetre bind-address del fitxer de configuració MySQL/MariaDB (/etc/mysql/mariadb.conf.d/50-server.cnf) Video - Connexió remota a servidor de base de dades
Creació d'un usuari
Una de les característiques dels reports és que només requereixen accés de lectura a la base de dades. Com a mesura de seguretat crearem un usuari en la nostra base de dades assignant-li el permís de lectura. Haurem d'autoritzar la connexió d'aquest usuari des de qualsevol equip. Video - creació usuari amb accés de lectura
Controlador ODBC
Si no tenim els drivers descarregats per a la connexió amb el servidor ODBC haurem de procedir a la seva descarrega. Podem utilitzar la plana oficial de MySQL per a descarregar-los (https://dev.mysql.com/downloads/connector/odbc/5.3.html). Amb els drivers instal·lats, hem de procedir a la configuració del driver ODBC per a la nostra base de dades. Utilitzarem un fitxer dsn per a configurar el nostre driver i importar-lo al projecte. Video - Configuració controlador ODBC per MySQL Server
Afegint el nostre DSN al projecte
Una vegada hem configurat el controlador ODBC i hem establert un fitxer per a la connexió a la nostra base de dades, és el moment de referenciar aquest fitxer al nostre projecte de Visual Studio. En el nou menú de Visual Studio (Crystal Report) seleccionarem l'opció "Database" i dins d'aquesta "Database Expert" Video - Incloure referència dsn al projecte WPF
Disseny del report
En el disseny del report haurem de decidir quina informació volem visualitzar en cada una de les parts del nostre informe. Video - Dissenyant el report
/* File: Window1.xaml.cs
Report file name: CrystalReport1.rpt
*/
using System.Windows;
using CrystalDecisions.CrystalReports.Engine;
namespace WPFReportExample
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
reportViewer.Owner = this;
ReportDocument report = new ReportDocument();
string path = System.AppDomain.CurrentDomain.BaseDirectory + "\\CrystalReport1.rpt";
report.Load(path);
report.Refresh();
reportViewer.ViewerCore.ReportSource = report;
}
}
}