Jump to content
  • 0

LET functie


Guido

Question

Posted

Kan iemand mij hier uitleggen wat je precies met de letfunctie kan doen? ik zie op het internet veel ingewikkelde(?) constructie met let functie, maar zoals hij in de help beschreven is begrijp ik het niet.

 

Ze stellen Let(x=5;x*x). Logisch, maar waarom gebruik je niet meteen 5*5 dan? of een field (als je x=field stelt natuurlijk). Dan doen ze ook nog met evaluate hocus pocus. Wie geeft mij het verlossende voorbeeld zodat ook bij mij het kwartje valt?

 

8) Guido

13 answers to this question

Recommended Posts

  • 0
Posted

Waar het let in basais om gaat is vooral makkelijker lezen en schrijven van berekeningen. Je kunt in het begin een aantal 'variabelen'stellen, die je verderop in je berekening kunt gebruiken.

Zoals in deze 'bijzonder ingewikkelde' formule.

 

Let ( [
weekStart = WeekOfYear ( DateFrom );
weekEind = WeekOfYear ( DateTo )]
; 
"Week " &
Case ( 
weekStart = weekEind ; weekStart ;
weekStart & " - " & weekEind )
)

 

deze variabelen wil je niet uitgeschreven in je code hebben:

 

 

  [ Boolean = Case ( RGorB = "B" ; 1 ; RGorB = "G" ; 1 ; RGorB = "R" ; 1 ; 0 ) ;
 Spectrum = Case ( RGorB = "B" ; 5 ; RGorB = "G" ; 3 ; 1 ) ;
 CleanHex = Trim ( Substitute ( Hex ; "#" ; "" ) ) ;
 HexInput = If ( Boolean = 1 ; Middle ( CleanHex ; Spectrum ; 2 ) ; CleanHex ) ;
 Character = Right ( HexInput ; 1 ) ;
 Length = Length ( HexInput ) ] ;

 

Je kunt berekeningen zeer leesbaar maken op deze manier. Ook recursieve functies (zichzelf aanroepende functies) zijn zo makkelijker te maken. Als je er mee werkt, zul je niet meer zonder kunnen. Ik werk nog veel in fm6 en mis ze echt...

 

Succes.

  • 0
Posted

Dank voor je antwoord, herrix.

Ik kan me vergissen, maar ik denk niet dat vraagsteller hiermee echt geholpen is. De essentie van een goede uitleg, namelijk glashelder van eenvoudig naar complex gaan, zit hier echt niet in. Nochtans was vraagsteller van een glasheldere eenvoudige vraag vertrokken ("waarom niet meteen 5 x 5?).

  • 0
Posted

Naja, dit had ik me idd ook al bedacht. Echter ik heb nooit van die ellenlange variabelen, dus eigenlijk staan ze nooit in de weg.

In mijn functies staat het eigenlijk altijd duidelijk; voor een variabele (als het een lange is) gewoon een paar enters met een comment // /*

 

Maar nu weet ik nog niet waarom dat gemoeid gaat met evaluate ?!

  • 0
Posted
evaluate ?!

 

Evaluate laat je toe een tekst te evalueren ... te interpreteren alsof het een berekening was.

 

Maak bvb een veld X aan en vul een record met 2+2

Maak een berekeningsveld Y = evaluate(x) en je krijgt 4 als resultaat.

De evaluate heeft dus de inhoud gelezen alsof het een berekening was ...

  • 0
Posted

mmmmmmm

wie niet waagt enzo...

 

@avd: betere input dan? ik leg het namelijk graag begrijpelijker uit. Wellicht staat er ergons in het forum een antwoord op de vraag.

  • 0
Posted

Het komt me voor dat dit onderwerp interessant genoeg is om er een deel van de confituursessie aan te besteden.

Er zijn nogal wat functies in FileMaker die perfect uitgelegd worden in de online help, maar waarvan het creatieve gebruik niet zo meteen evident is: "Wanneer gebruik je zoiets, en waarom is het in dat geval beter het zo te doen, en niet anders?" Iemand die nog nooit een loterij heeft gekend, zal moeilijk het nut van de Random-functie inzien en iemand die niet vertrouwd is met statistiek zal ook niet meteen zien wat een Standaard Deviatie zoal kan betekenen.

Het wordt pas fijn als je de vakman (en dan spreek ik over het vak buiten FileMaker) ziet of hoort uitleggen waarom hij in FileMaker precies met deze of gene tool werkt. Ik had hier eigenlijk zo'n antwoord verwacht, en het verwondert me dat er na een aantal dagen niets in de bus is gedwarreld (het verwondert me trouwens al evenzeer dat we nog maar 10 inschrijvingen hebben voor de confituursessie: zijn er misschien nogal veel mensen van de vaste kern op vakantie? in een gletsjerkloof gegleden? overboord gezwiept op het IJsselmeer?).

  • 0
Posted

Zoals André aangeeft worden de berekeningen meer leesbaar maar de LET functie laat ook toe dat bepaalde berekeningen sneller worden uitgevoerd.

 

Bij de calculatie :

Case(
Count(SelfJoinOnbetaaldeFacturen::Factuurnummer) - Max toegelaten open facturen = 1;"Geachte Heer";

Count(SelfJoinOnbetaaldeFacturen::Factuurnummer) - Max toegelaten open facturen = 2;"Mijnheer";

Count(SelfJoinOnbetaaldeFacturen::Factuurnummer) - Max toegelaten open facturen = 3;"Gij lelijke dief";

Count(SelfJoinOnbetaaldeFacturen::Factuurnummer) - Max toegelaten open facturen > 3;"Gij grote lelijken dief";"")

 

evalueert FileMaker de COUNT-functie 4 maal.

 

Door de LET-functie te gebruiken, hoeft FileMaker de COUNT maar één keer te evalueren wat sneller is.

 

Let(Criterium = Count(SelfJoinOnbetaaldeFacturen::Factuurnummer) - Max toegelaten open facturen;
Case(
Criterium = 1;"Geachte Heer";
Criterium = 2;"Mijnheer";
Criterium = 3;"Gij lelijke dief";
Criterium > 3;"Gij grote lelijken dief";""))

 

 

Koen

 

NB: Bij een LET functie hoeven de variabelen geen $ te hebben.

$-variabelen of lokale script variabelen zijn eigenlijk bedoelt voor scripts, waarbij je een bepaalde waarde in verschillende script stappen wil her gebruiken. Hetgene wij in vorige versies van FileMaker in een globaal veld zouden plaatsen.

  • 0
Posted

Bedankt, Koen (en... zien we je in Hengelo?)

NB: Bij een LET functie hoeven de variabelen geen $ te hebben.

$-variabelen of lokale script variabelen zijn eigenlijk bedoelt voor scripts, waarbij je een bepaalde waarde in verschillende script stappen wil her gebruiken. Hetgene wij in vorige versies van FileMaker in een globaal veld zouden plaatsen.

Dat dat niet hoeft, daar had ik niet bij stilgestaan. Maar ik veronderstel dat het wel mag, en ik dacht zelfs te mogen hopen dat ik dan die "on the fly" gecreëerde variabele dank zij de dubbele dollar vanaf dan overal elders kon gebruiken, of is dat niet zo? Dat zou een tegenvaller zijn.

  • 0
Posted

Ja André, dat kan.

 

Ik gebruik een $$ variable in een script dat ik nodig heb van het ogenblik dat dit script voor de eerste gebruikt wordt.

 

Zaak is de benaming van de variable:

1. goed te kiezen

2. niet te vergeten

3. exact te gebruiken

 

Het geheel werkt als wat we vroeger in een globaaltje moesten stoppen.

 

Best handig, en we zien hier nu ook hoe belangrijk het is om de codering te documenteren, al was het maar om rampscenarios te vermijden.

 

Gelukkig is er nu de DataViewer om het geheel wat overzichtelijk te houden en Janneke bij Mieke te houden...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...