U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Rapportering : gebruik van Crystal Reports

0000001955     -      20-10-2017

Vanaf de versie Aruba laat Mercator het gebruik toe van Crystal Reports als rapporteneditor. Bijgevoegd vindt u de nodige inlichtingen.

Installatie

  1. Crystal Reports installeren (op de werkposten waarop de lay-outen zullen worden gewijzigd).
  2. 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

  1. Een bestand rapportnaam.rpt (zelfs leeg) creëren in de hoofddirectory van Mercator
  2. De opdracht in het tabblad SQL maken en de customizer (zie bijgevoegd zipbestand) in de zone plaatsen die hiervoor is voorzien.
  3. In de customizer rapportnaam vervangen door de juiste naam (rapportcrystal String veranderlijke).
  4. De opdracht uitvoeren (in de directory DATA, deze genereert een XML-folder waarvan de naam te vinden is in het veld ID van CurrentDocum).
  5. De Crystal-lay-out creëren (bestand rapportnaam.rpt) en er het XML-bestand aan toevoegen dat in voorgaand punt werd gegenereerd

 

Zoom
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)