Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Bloquer la suppression d'une fiche de signalétique si des actions y sont liées

0000002108     -      07/11/2013

Cette exemple montre comment bloquer la suppression d'une fiche de signalétique si des actions y sont liées. L'exercice est fait pour le 4ème signalétique (SigDest) et peut être facilement adapté à tous les signalétiques de Mercator. Il implémente l'interface MercatorUi.ICustomizers.ISigCreated.

Il exploite l'évènement BeforeRecordDelete de MercatorUi.Sig.Sig qui permet d'intervenir en amont du processus de suppression d'un enregistrement.

Le code s'établit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Reflection;

namespace SigDest
{
    public class Customizer : MercatorUi.ICustomizers.ISigCreated
    {

        public void SigCreated(MercatorUi.Sig.Sig Sig)
        {
            Sig.BeforeRecordDelete += new MercatorUi.Sig.Sig.BeforeRecordDeleteEventHandler(Sig_BeforeRecordDelete);
        }

        void Sig_BeforeRecordDelete(object sender, MercatorUi.Sig.Sig.BeforeRecordDeleteEventArgs e)
        {
            string reqSql = "declare @ret bit \r\n"
                          + "if exists(select * from ACTIONS (NOLOCK) where (module='DEST') and (id_sig=@id)) \r\n"
                          + "    set @ret=1 \r\n"
                          + "else \r\n"
                          + "    set @ret=0 \r\n"
                          + "select @ret as ret";
            DataSet ds = Api.Zselect(Globals.RepData, reqSql, new MercatorSqlParam("@id", e.Record["d_id"], SqlDbType.Char));
            if (ds == null) // on a rencontré une erreur SQL
            {
                e.Cancel = true;
            }
            else if (Convert.ToBoolean(ds.Tables[0].Rows[0]["ret"]))
            {
                MercatorUi.Dialogs.Stop("Vous ne pouvez pas supprimer cette fiche car des actions y sont liées !");
                e.Cancel = true;
            }
        }

    }
}