Ga naar inhoud
  • 0

portal met unieke waarden


hezndepezn

Vraag

5 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Eerst even zeggen dat dit niet een techniek is die ik zelf heb uitgevonden, maar heb te danken aan Fabrice Nordmann.

 

Het principe zit hem in het volgende: een auto-enter wordt enkel geherevalueerd als de velden die het gebruikt in zijn calculatie

a) veranderen

b) behoren tot dezelfde tabel

 

Onder deze twee condities zal de calculatie geherevalueerd worden.

 

het probleem hier is dat we met een gerelateerde waarde zitten, en dus niet aan conditie b wordt voldaan ( als je dus de _trigger = thema zou weglaten werkt het niet ). Maar, het is ook zo dat we enkel willen dat deze waarde wordt geherevalueerd indien er iemand prutst met thema. Daarom voeg ik de _trigger = thema toe. Op die manier forceer ik de auto-enter om zich opnieuw te evalueren als het veld "thema" wordt veranderd.

 

Let ( 

_trigger = thema

;
Case ( uniek selfjoin::thema ; -1 ; 1 ) 

)

 

Ik gebruik dit vaak ipv een lookup, waarbij ik een foreign key als _trigger gebruik, en dan de gerelateerde waarde laat opzoeken indien de foreign key veranderd. Op die manier probeer ik veel unstored calculaties te ontwijken. Deze techniek werkt eigenlijk als een lookup, alleen kan je er nu een case ( ) aan vastkoppelen, wat niet kan met een lookup.

 

Voor dit concrete voorbeeld werkt dit inderdaad niet 100 procent (en dus eigenlijk niet moet ik eerlijkheidshalve toegeven). Het probleem is hier als volgt. Stel ik maak een record aan met thema a. Ik maak een nieuwe record aan met thema b. Beide geven dan 1 terug in de calculatie. Als ik nu in de tweede record thema b in thema a verander zal ik dus auto-enter triggeren en zal hij dus -1 geven ( maw het is een duplicaat). Probleem is nu het volgende, als ik record 1 in b verander, zal record 2 nog altijd aangeven dat hij niet uniek is, terwijl hij nu dus wel uniek is geworden.

 

Bovenstaande techniek werkt dus enkel binnen de context van die record, maar kan dus niet de waardes in andere records gaan aanpassen. Je zal het denk ik dus idd via doScript moeten doen. Ik dacht dat het de bedoeling was om bij de creatie van een record of het aanpassen van een record dat hij dan zou moeten kijken of een waarde uniek is. Maar het is natuurlijk ook de bedoeling dat als je een waarde verandert van een record of hij dan gaat kijken naar de andere of die al dan niet uniek zijn geworden, en dat doet hij dus niet. Of je moet werken met een unstored calculations, maar dan werkt je portaal niet meer...

 

Ik hoop dat dit een beetje duidelijk is... anders wil ik het nog eens proberen uit te leggen :-)

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...