Mercator beschikt over een functionaliteit die het mogelijk maakt om in een informatiebestand in alle sleutels te zoeken. Zie punt 1 van deze pagina: Zoek op alle criteria.
De onderstaande code laat zien hoe deze zoekfunctie ook kan worden toegepast op andere kolommen, eventueel behorend tot andere tabellen.
Op dit punt in het programma genereert Mercator een where-clausule die, bijvoorbeeld voor de artikels, vergelijkbaar is met:
(S_MODELE like '{0}%') or (S_CLE1 like '{0}%') or (S_CLE2 like '{0}%') or (S_ID like '{0}%')
or exists(SELECT * from ARTFOU (NOLOCK) where (artfou.id_art=stock.s_id) and (REF_FOU like '{0}%'))
or exists(SELECT * from NUMSERIES (NOLOCK) where (numseries.id_art=stock.s_id) and (numseries.NUM_SERIE like '{0}%'))Deze clausule kan worden aangepast via het event SearchingAll van de klasse MercatorUi.Sig.Sig.
De onderstaande code breidt de zoekfunctie uit naar
- S_MODELEN van de tabel STOCK,
- de naam van het rayon.
namespace SigStock
{
public class Customizer : MercatorUi.ICustomizers.ISigCreated
{
public void SigCreated(MercatorUi.Sig.Sig sig) // Mercator moet worden herstart om de wijzigingen in de customizer via SigCreated door te voeren.
{
sig.SearchingAll += Sig_SearchingAll;
}
private void Sig_SearchingAll(object sender, MercatorUi.Sig.Sig.SearchingAllEventArgs e)
{
e.WhereClause += " or (S_MODELEN like '{0}%')"
+ " or exists(SELECT * from RAYONS (NOLOCK) where (rayons.id=stock.s_id_rayon) and (rayons.nom like '{0}%'))";
}
}
}
Let op de aanwezigheid van {0} in deze code, die zal worden vervangen door de zoeksleutel. Deze notatie moet worden gerespecteerd.