Vanaf de versie Aruba laat Mercator het gebruik toe van Crystal Reports als rapporteneditor. Bijgevoegd vindt u de nodige inlichtingen.
Installatie
- Crystal Reports installeren (op de werkposten waarop de lay-outen zullen worden gewijzigd).
- Crystal.dll (zie bijgevoegd zip-bestand) kopiëren in de hoofddirectory van Mercator.
Indien u de geleverde code wilt openen/wijzigen is Visual Studio 2010 noodzakelijk.
Gebruik
- Een bestand rapportnaam.rpt (zelfs leeg) creëren in de hoofddirectory van Mercator
- De opdracht in het tabblad SQL maken en de customizer (zie bijgevoegd zipbestand) in de zone plaatsen die hiervoor is voorzien.
- In de customizer rapportnaam vervangen door de juiste naam (rapportcrystal String veranderlijke).
- De opdracht uitvoeren (in de directory DATA, deze genereert een XML-folder waarvan de naam te vinden is in het veld ID van CurrentDocum).
- De Crystal-lay-out creëren (bestand rapportnaam.rpt) en er het XML-bestand aan toevoegen dat in voorgaand punt werd gegenereerd
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
// <ReferenceInclude>"Crystal.dll"</ReferenceInclude>
using Crystal;
namespace MercatorUi.Reporting
{
public class Customizer : MercatorUi.ICustomizers.IDataSetForReportUpdater, MercatorUi.ICustomizers.IReportDesignBlocker
{
private string rapportcrystal;
public void DataSetForReportUpdate(DataSet ds, MercatorUi.Reporting.CustomizerInfo customizerInfo)
{
if (!System.IO.Directory.Exists(MercatorUi.Globals.RepData + "Crystal"))
System.IO.Directory.CreateDirectory(MercatorUi.Globals.RepData + "Crystal");
// Récupération de l'id du rapport dans la table CurrentDocum
string ID = ds.Tables["CurrentDocum"].Rows[0]["id"].ToString();
//Déclaration de la variable contenant le nom du layout .rpt
rapportcrystal = MercatorUi.Globals.RepData + "Crystal\\" + ID + ".rpt";
//Création du fichier XML servant de base de données au rapport
Api.DataSetToXmlFile(ds, MercatorUi.Globals.RepData + "Crystal\\" + ID + ".xml");
// Propriétés StopProcess placé à True pour bloquer la prévisualisation du Layout dans Mercator
customizerInfo.StopProcess = true;
// Switch permettant d'éxucuter une commande différent selon l'action voulue
if (customizerInfo.Info == MercatorUi.Reporting.CustomizerInfoEnum.RunReport)
{
// Création et affichage de la form selon la classe définie dans la dll CrystalForms
Crystal.CrystalForm CrystalForm = new Crystal.CrystalForm(rapportcrystal);
CrystalForm.Show(MercatorUi.Globals.iw);
}
}
public bool ReportDesignBlock(DataRow dr_docum, DataSet ds)
{ //Test sur la possibilité d'éxecution de lancement de crystal
try
{//Lancement de CrystalReport avec le bon layout
// Récupération de l'id du rapport dans la table CurrentDocum
string ID = ds.Tables["CurrentDocum"].Rows[0]["id"].ToString();
//Déclaration de la variable contenant le nom du layout .rpt
rapportcrystal = MercatorUi.Globals.RepData + "Crystal\\" + ID + ".rpt";
if (!System.IO.File.Exists(rapportcrystal))
{
Api.Stop("Pour pouvoir éxécuter cette action, veuillez créer un fichier ID_du_doc.rpt et le lier au fichier .Xml correspondant");
}
else
{
System.Diagnostics.Process processus = new System.Diagnostics.Process();
processus.StartInfo.FileName = rapportcrystal;
processus.Start();
processus.Close();
}
}
catch (Exception e)
{
Dialogs.Stop(e.Message);
}
// On renvoie True pour bloquer le processus normal de Mercator (page 1952 du site)
return true;
}
}
}
BELANGRIJKE opmerking : Mercator verzekert geen enkele ondersteuning aangaande de functionaliteiten van Crystal Reports. Deze ontwikkeling wordt "as is" geleverd, zonder enige vorm van ondersteuning noch mogelijke evolutie in het kader van de standaardondersteuning van Mercator.
Crystal Reports® is een gedeponeerd handelsmerk dat geen eigendom is van Mercator.
Te laden :
0000001955.zip (14 Kb - 10-10-2011)