Il est possible, au départ d'un site web ASP.net connecté à un Mercator Majuro, de produire un PDF correspondant à un rapport créé dans "Outils / Paramétrage Documents".
Cela se fait en utilisant cette méthode de MercatorUi.Reporting.ReportingStatic :
public static void RunReportFromDocum(string id_docum, List<MercatorUi.Reporting.OutputDescriptor> listOutputDescriptors, List<MercatorSqlParam> listSqlParams)
Les paramètres à passer à cette méthode sont :
- l'ID du rapport : valeur trouvée dans la colonne ID de la table DOCUM
- Une liste de OutputDescriptors permettant de spécifier un export au format PDF
- Une liste de MercatorSqlParams : cette liste doit contenir tous les paramètres SQL à passer à la requête définie dans le rapport. Il faut tenir compte du fait que par défaut, aucun paramètre n'est transmis par cette méthode. Il faut donc mettre dans cette liste :
- Les paramètres SQL correspondant aux valeurs des champs de la fiche signalétique en cours qui sont nécessaires pour cette requête
- Les paramètres SQL correspondant aux constantes habituellement saisies par l'utilisateur (@CONST_1, @DATE_1, ...)
L'exemple repris ci-dessous génère un PDF à partir d'un document pour le quel S_ID et S_MODELE ainsi que CONST1 doivent être passés.
string pdf = Server.MapPath(Request.ApplicationPath + @"\Pdf\" + MercatorApi.Api.NewId() + ".pdf");
List<MercatorSqlParam> lp = new List<MercatorSqlParam>();
lp.Add(new MercatorSqlParam("@const_1", n));
lp.Add(new MercatorSqlParam("@s_id", s_id, System.Data.SqlDbType.Char));
lp.Add(new MercatorSqlParam("@s_modele", s_modele, System.Data.SqlDbType.Char));
List<MercatorUi.Reporting.OutputDescriptor> listOutputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
listOutputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorExport(MercatorUi.Reporting.ExportReportEnum.PDF, pdf, MercatorUi.Reporting.ExportOpenAfterEnum.No));
Api.LastError = "";
MercatorUi.Reporting.ReportingStatic.RunReportFromDocum("B714041B3E", listOutputDescriptors, lp);
if (!System.IO.File.Exists(pdf))
{
if (!string.IsNullOrEmpty(Api.LastError))
Response.Write(pdf + " : " + Api.LastError);
else
Response.Write("Impossible to create " + pdf + " !");
Response.End();
}
Response.Redirect("pdf/" + Api.JustFName(pdf));