Thinkwise parameters gebruiken in functionaliteit

Wanneer je in Thinkwise functionaliteit schrijft, schrijf je standaard functies voor een specifiek doel. Bijvoorbeeld om te beoordelen of een geboortedatum wel in het verleden ligt. In dergelijke gevallen kan het prettig zijn om parameters te gebruiken, zodat deze functies niet alleen bij geboortedatums kunnen worden gebruikt, maar ook voor andere datums waarbij dezelfde validatie gedaan moet worden.

Zoals je wellicht weet schrijf je dergelijke functionaliteit voor specifieke database velden. We gaan eerst de oude situatie schetsen waarbij je een functie voor 1 specifiek doel schrijft. We gaan hierbij uit van het veld 'Geboortedatum' in de tabel 'Medewerker'. Om te controleren dat deze datum in het verleden ligt, moet je de volgende stappen doorlopen:

  • Ga naar Business Logic > Functionality
  • Maak een nieuwe Control Procedure aan
  • Kies voor de code group 'Defaults'
  • Ga naar het tabblad Assigning
  • Koppel de template aan de tabel 'Medewerker'
  • Ga nu naar het tabblad Result
  • Genereer de definitie van de template
  • Schrijf hier nu de SQL

Deze zal er ongeveer als volgt uitzien:


if @cursor_from_col_id = 'geboortedatum'
and @geboortedatum >= CAST(GETDATE() as date)
begin
     exec tsf_send_message 'datum_moet_in_het_verleden_liggen', 0, 0;
     set @geboortedatum = null;
end;
			

Dit is al genoeg om de geboortedatum te laten valideren. De functie geeft nu een melding als de datum niet in het verleden ligt EN het formulierveld wordt daarna leeg gemaakt. Maar wat nu als we deze default ook willen gebruiken om het veld 'Besteldatum' in de tabel 'Bestellingen' te controleren. Onze enige optie nu is om de default nogmaals te schrijven.

Dat kan natuurlijk beter. We hebben nu twee belangrijke opties: of we maken van de validatie zelf een functie die je in beide defaults aanroept (dat gaan we hier niet doen) of we voegen aan de default een parameter toe. Dit laatste gaan we hier doen. Om dat te doen moeten we de volgende stappen doorlopen:

  • Ga naar Business Logic > Functionality
  • Selecteer de eerder aangemaakte default
  • Kies voor de code group 'Defaults'
  • Ga naar het tabblad Assigning
  • Selecteer de tabel Medewerker als 'Program object'
  • Klik bij 'Assigned templates' op het tabblad 'Result'
  • Selecteer de eerder aangemaakte default
  • Klik nu op het tabblad Parameters
  • Maak als volgt een nieuwe parameter aan:

Nu heb je de default verteld dat hij een parameter moet gebruiken, maar je hebt de default zelf nog niet verteld hoe deze om moet gaan met deze parameter. Daarvoor gaan we de code van de layout zelf als volgt aanpassen:


if @cursor_from_col_id = '[datum]'
and @[datum] >= CAST(GETDATE() as date)
begin
     exec tsf_send_message 'datum_moet_in_het_verleden_liggen', 0, 0;
     set @[datum] = null;
end;
			

En dat is het! Let wel: deze code gaat er dus wel vanuit dat je een message hebt aangemaakt met de naam 'datum_moet_in_het_verleden_liggen'. Nu heb je een default die een parameter 'datum' verwacht, waarin de naam van de database kolom is opgeslagen. Wil je nu dus dezelfde default van toepassing laten zijn op het veld veld 'Besteldatum' in de tabel 'Bestellingen', dan koppel je deze default ook aan de tabel Bestellingen, waarna je de parameter 'datum' vult met de waarde 'Besteldatum'.

Over mij

Mijn naam is Marcel van Langen. Ik ben werkzaam als freelancer. Een harde en eerlijke werker, met een passie voor doelgerichte oplossingen. Ik voer al jaren mooie klussen uit voor geweldige klanten. Mijn technische specialisaties zijn het Thinkwise platform, SQL Server en ColdFusion development.

Lees verder...
Diensten