In de Trigger and Validation Manager is het mogelijk om op basis van een onjuiste combinatie van velden een foutmelding aan de gebruiker te geven.

Indien er meerdere combinaties mogelijk zijn, is het raadzaam deze met behulp van een SQL functie te controleren. Daarmee voorkom je dat er meerdere gebeurtenissen moeten worden opgezet om de combinaties van velden af te dekken. Hiermee wordt het ook mogelijk meerdere foutmeldingen als 1 melding aan de gebruiker te presenteren.

Hier volgt een stappenplan om een functie op te zetten, op basis van een verzoektype Appointment. Hierbij wordt er vanuit gegaan dat de volgende combinaties verplicht zijn:

  1. Indien de Relatie is gevuld, dient het veld “Commerciële afspraak” te zijn aangevinkt.
  2. Indien de Relatie is gevuld, dient er ook een contactpersoon te worden geselecteerd.
  3. Indien de Relatie is gevuld, dient het project gekoppeld te zijn aan de geselecteerde relatie.
  4. Indien de Relatie niet is gevuld, dient het project niet gekoppeld te zijn aan een relatie.

Dit is slechts een voorbeeld, de te maken combinaties zijn eindeloos.

Dit ziet er in de praktijk zo uit:

Op basis van de ingestelde combinatie van velden worden de foutmeldingen gestapeld.

Deze gebeurtenis wordt als volgt opgezet:

De criteria worden ingesteld op wijzigen en nieuw verzoek en specifiek op het type verzoek (70).

De stap ziet er als volgt uit:

In de validatie stap, wordt via een query de functie aangeroepen. De functie heeft 1 variabele (HID) en kent de volgende syntax:

CREATE FUNCTION [dbo].[CONS_NOB_FN_Validate_Request70]

(@HID as int)

RETURNS @Validate_Request TABLE (ErrDesc varchar (250), TermID bigint)

AS

BEGIN

— Declareer de variabelen voor de vergelijking

DECLARE @Status as int

DECLARE @Type as int

DECLARE @CustomerID as uniqueidentifier

DECLARE @CustomerContactID as uniqueidentifier

DECLARE @Projectnumber as nvarchar(20)

DECLARE @FreeBoolField_01 as tinyint

 

IF @HID is null or not exists(select id from absences ab (nolock) where ab.hid = @HID)

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID) Values (‘Geen Verzoeknummer geselecteerd’, 0)

END

 

ELSE

 

BEGIN

— Map de velden waarop een controle moet plaatsvinden

SELECT @Status = ab.status,

@Type = ab.Type,

@CustomerID = ab.CustomerID,

@CustomerContactID = ab.CustomerContactID,

@Projectnumber=ab.Projectnumber,

@FreeBoolField_01=ab.FreeBoolField_01

FROM absences ab (NOLOCK)

WHERE ab.hid = @HID

 

— Controle combinaties van velden

IF @type in (70) and @Status = 0 and @FreeBoolField_01=1 and @CustomerID is null

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID)

VALUES (‘Selecteer een relatie bij een commerciele afspraak.’, 0)

END

 

IF @type in (70) and @Status = 0 and @FreeBoolField_01=0 and @CustomerID is not null

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID)

VALUES (‘Vul bij commerciele afspraak Ja in.’, 0)

END

 

IF @type in (70) and @Status = 0 and @CustomerContactID is null and @CustomerID is not null

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID)

VALUES (‘Selecteer een contactpersoon.’, 0)

END

 

IF @type in (70) and @Status = 0 and @CustomerID is not null

and @projectnumber not in (select project from projectaccounts where account=@CustomerID)

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID)

VALUES (‘Selecteer een project van de relatie.’, 0)

END

 

IF @type in (70) and @Status = 0 and @CustomerID is null and @projectnumber in (select project from projectaccounts)

BEGIN

INSERT INTO @Validate_Request (Errdesc, TermID)

VALUES (‘Selecteer een relatie of selecteer een ander project.’, 0)

END

 

END

RETURN

END