Calculated filed

Status
Niet open voor verdere reacties.

SA3

Gebruiker
Lid geworden
3 jan 2016
Berichten
127
Ik heb een ledenadmin-programma met een mutatie-formulier voor de gegevens van actieve en inactieve (oudleden e.d.) leden.
In het mutatie-formulier wil ik een veld opnemen wat het aantal jaren lid berekent op de volgende manier:
JarenLid = Als (SoortLid = Actief) dan (JarenLid = DatumVandaag - Inschrijfdatum) anders Jarenlid = (Uitschrijfdatum - Inschrijfdatum)
Hoe kan ik dit in code realiseren?
 
Met een IIF functie. En wat is er mis met de term "Berekend veld"? Hoef je je ook niet druk te maken over hoe je lastige engelse woorden als "field" schrijft :).
Code:
JarenLid: IIf([SoortLid]=TRUE;DateDiff("yyyy";[Inschrijfdatum];Date())+(Format(Date();"mmdd")<Format([Inschrijfdatum];"mmdd"));
DateDiff("yyyy";[Inschrijfdatum];[Uitschrijfdatum ])+(Format([Uitschrijfdatum ];"mmdd")<Format([Inschrijfdatum];"mmdd")))
 
Sorry voor de schrijffout.
Code toegevoegd aan de query. Als ik deze start wordt gevraagd de parameterwaarde op te geven voor Soort lid. Vul ik een willekeurige waarde in dan wordt JarenLid gerekend naar de datum van vandaag. Laat ik de parameterwaarde leeg dan krijg ik JarenLid alleen voor alle NIET-Actieve leden.
 
Je hebt zélf aangegeven dat je een veld SoortLid hebt. Hoe moeten wij dat anders weten? Overigens zou ik zelf zo'n veld nooit gebruiken, want het feit dat er een einddatum is ingevuld is al voldoende om te bepalen of een lid actief is of niet.
 
Krijg je zoiets:
Code:
Jaren_Lid: IIf([Uitschrijfdatum] Is Null;
     DateDiff("yyyy";[Inschrijfdatum];Date())+(Format(Date();"mmdd")<Format([Inschrijfdatum];"mmdd"));
     DateDiff("yyyy";[Inschrijfdatum];[Uitschrijfdatum])+(Format([Uitschrijfdatum];"mmdd")<Format([Inschrijfdatum];"mmdd")))
 
Helaas is in het verleden niet altijd een Uitschrijfdatum ingevuld. Deze is dus niet als expressie te gebruiken. Heb nu ingevuld Iif([SoortLid)]="Actief" enz.
Dit werkt. Dank voor de inbreng.
 
Helaas is in het verleden niet altijd een Uitschrijfdatum ingevuld.
Dat krijg je als je een database slecht opbouwt :). Het veld [Actief] zou overbodig moeten zijn, want is dubbelop. Andersom kun je dat eventueel óók zeggen van het veld Uitschrijfdatum, als je die datum ergens anders uit kunt halen (bijvoorbeeld lidmaatschapsbetaling). Maar handig is dat niet. Zelf zou ik dus proberen om de Uitschrijfdatum van die betreffende records te achterhalen (kijk weer naar je betalingen en/of activiteiten) en die alsnog in te vullen. Dan kan het veld SoortLid er dus uit (tenzij je dat óók voor bestuursfuncties etc. gebruikt, dan heeft-ie nog nut) maar gebruik 'm dus niet meer om de actieve status van een lid te bepalen. Want ofwel mensen vergeten de status aan te passen, ofwel ze vergeten de datum in te vullen. Hoe dan ook: één van de twee handelingen is overbodig, en je laat mensen dus teveel werk doen. Zelf doe ik dat alleen bij mensen waar ik een hekel aan heb :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan