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

Mettre en place une liaison vers un signalétique dans une grille

0000003098     -      24/10/2023

1. Dans une table libre

Soit une table libre nommée "Test". On souhaite y ajouter une liaison vers le signalétique des clients, càd la possibilité d'y effectuer une saisie validée d'un client et d'obtenir une colonne avec l'affichage du nom correspondant.

Cette table libre contient la colonne ID_CLI.

alter table FREE_TABLE_TEST add id_cli char(10) not null default ''

 

Via la customizer de table libre, il faut d'abord mettre en place ce StringUpdater pour modifier la requête SQL :

  • ligne 1
    • *
    • *,id_cli as UserDefinedButtonColumnShowSigCli,cli.c_nom as nom_client
  • ligne 2
    • from FREE_TABLE_TEST
    • from FREE_TABLE_TEST left join CLI on id_cli=c_id

 

Ensuite, il faut spécifier cette règle de colonne sur la colonne Name = UserDefinedButtonColumnShowSigCli :

  • ButtonSigLink
    • SigIdColumn = id_cli
    • SigNameColumn = nom_client

Ces propriétés indiquent à Mercator quelles sont les colonnes qui, respectivement, contiennent l'ID et le nom du client. Si ces colonnes sont définies et existent, alors Mercator met en place toute la mécanique nécessaire, dont notamment l'automatisation du changement d'icône dans la colonne "bouton".

free_table_cli


 

2. Dans une grille en écriture de signalétique

Soit une grille du signalétique "articles" permettant les modifications dans laquelle on souhaite pouvoir stocker des informations liées aux clients selon une relation 1-n.

La table SQL derrière cette grille a été créée avec cette requête :

CREATE TABLE [dbo].[STOCKEXT](
                [ID_STOCK] [char](10) NOT NULL default '',
                [ID] [char](10) NOT NULL default '',
                [ORDRE] [int] NOT NULL default 0,
                [ID_CLI] [char](10) NOT NULL default '',
                [INFO] [varchar](50) NOT NULL default '',
CONSTRAINT [PK_STOCKEXT] PRIMARY KEY CLUSTERED
(
                [ID_STOCK] ASC,
                [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE [dbo].[STOCKEXT] WITH CHECK ADD CONSTRAINT [FK_STOCKEXT_STOCK] FOREIGN KEY([ID_STOCK]) REFERENCES [dbo].[STOCK] ([S_ID]) ON UPDATE CASCADE ON DELETE CASCADE
ALTER TABLE [dbo].[STOCKEXT] WITH CHECK ADD CONSTRAINT [FK_STOCKEXT_CLI] FOREIGN KEY([ID_CLI]) REFERENCES [dbo].[CLI] ([C_ID]) ON UPDATE CASCADE ON DELETE CASCADE

CREATE INDEX ORDRE ON [dbo].[STOCKEXT] (ORDRE)

 

La grille est associée à cette requête :

select id_stock,id,ordre,[id_cli],id_cli as UserDefinedButtonColumnShowSigCli,cli.c_nom as nom_client,[info] 
from STOCKEXT inner join CLI on id_cli=c_id where id_stock=@s_id
order by ordre

 

Ensuite, il suffit de spécifier cette règle de colonne sur la colonne Name = UserDefinedButtonColumnShowSigCli :

  • ButtonSigLink
    • SigIdColumn = id_cli
    • SigNameColumn = nom_client

pour que Mercator applique toute la mécanique nécessaire à la liaison au signalétique des clients.

 

Remarque : la seconde foreign key empêche la sauvegarde d'une ligne vide. Ce comportement est souhaitable.