Som maken in Navsion

AppieHeijnAppieHeijn Member Posts: 34
edited 2008-05-14 in NAV Dutch speaking only
Voor mijn project op school moet ik een module maken in navision voor het registreren cursussen. In de module moet ik ook gebruik maken van een som. Ik moet twee velden berekenen en de uitkomst in een ander veld plaatsen. Ik moet de duur x dagprijs = cursusprijs berekenen. Navision verteld mij dat ik van cursusprijs een SumIndexField moet maken maar een SumIndexField mag geen Flowfield zijn. Hoe maak ik dus een goede berekening?

Misschien een vraag die heel simpel is, maar toch.... [-o<
Navision versie: NL 3.70.B

Comments

  • krikikriki Member, Moderator Posts: 9,112
    Cursusprijs moet een normaal veld zijn.
    Elke keer dat je dagprijs of duur veranderd, moet je cursusprijs aanpassen (In de OnValidate van de 2 eerste velden moet je code schrijven om cursusprijs te berekenen).
    Het beste is om een nieuwe function te maken "BerekenCursusPrijs" die de cursusprijs berekend en die functie oproept in de OnValidate van beide andere velden.

    Het nut om dan Cursusprijs als SumIndexField te maken hangt af of je verschillende records met dat veld in moet optellen om dan een groot totaal te hebben.
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • AppieHeijnAppieHeijn Member Posts: 34
    Hoe zou die functie eruit zien? Waar kan ik die functies maken in de C/AL code?
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    Om functies te maken moet je een ontwikkellicentie hebben en vervolgens kun je functies maken in alle soorten objecten (tabel, scherm, codeunit).

    De C/AL-code benader je door F9 te drukken als je een object aan het wijzigen bent.

    De code in de functie wordt:
    cursusprijs := duur * dagprijs;

    Maar eigenlijk denk ik dat het bijna niet te doen is om "een module maken in navision voor het registreren cursussen" als je geen enkele NAV-cursus of ervaring hebt...

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    tinoruijs wrote:
    Maar eigenlijk denk ik dat het bijna niet te doen is om "een module maken in navision voor het registreren cursussen" als je geen enkele NAV-cursus of ervaring hebt...

    Tja, op het HBO moet het kunnen. Maar het lukt al wel redelijk. Ik heb al redelijk wat in elkaar geknutseld. Maar nu moet ik met het rekenen aan de slag en dat volg/snap ik nog niet helemaal.

    Ik heb een functie aangemaakt zoals aan gegeven in het eerste reply BerekenCursusPrijs. Moet ik dan bij de cursusprijs de regel cursusprijs := duur * dagprijs; invullen bij die functie? En dan bij de duur en dagprijs de functie aanroepen? Maar hoe roep je die functie aan?
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    In de OnValidate van de 2 eerste velden (duur en dagprijs) moet je code schrijven:
    BerekenCursusPrijs;
    

    Dit roept de functie aan.

    En de functie is gedefinieerd in de tabel met de volgende code:
    cursusprijs := duur * dagprijs;
    

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Edit: Ik heb het al voor elkaar. Hij past de berekening niet toe op de al aanwezige gegevens. Bedankt voor jullie hulp! :D

    Ik heb het precies gedaan zoals hier is beschreven maar toch werkt het niet. het type velden is decimal. Of moet ik nog op een bepaalde manier de waarde in het veld cursusprijs zien te krijgen?
    In het de C/AL code van de tabel staat nu een functie BerekenCursusPrijs
    cursusprijs := Duur * Dagprijs;
    

    De functie BerekenCursusPrijs is bij de C/AL code van elk veld terug te zien.
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    Graag gedaan. Goed bezig! :)

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    edited 2008-05-08
    Ik heb nu ook een andere berekening gemaakt. Namelijk Het aantal inschrijvingen * cursusprijs = totaalbedrag. Deze berekening werkt nu ook maar het totaal bedrag wordt niet geupdate nadat iemand zich heeft ingeschreven. Ik moet dan eerst moet het lookup pijltje klikken van de cursusprijs en dat update hij het totaalbedrag. Een CurrForm.UPDATE() op het veld totaal bedrag werkt niet. Waar kan dit aan liggen?
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    Cursusprijs is dus een flowfield op de cursuskop? Dan moet je voordat je in tabel cursuskop in code gebruik kunt maken van de waarde in Cursusprijs CALCFIELDS(Cursusprijs); plaatsen.

    En je hebt volgens mij alleen in de OnValidate van het veld "Aantal inschrijvingen" de volgende regels code:
    CALCFIELDS(Cursusprijs);
    "Totaal bedrag" := Cursusprijs * "Aantal inschrijvingen";
    

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Je gaf net antwoord na mijn edit. De berekening werkt wel maar wordt niet geupdate na een inschrijving van een deelnemer. Ik moet eerst op de lookup pijl klikken die bij het selecteren van het cursusprijs veld verschijnt. Het totaal bedrag wordt dan (eventueel opnieuw) berekend.
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    Heb je wel de functie aangeroepen vanuit de OnValidate van Aantal Inschrijvingen?

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Ik roep de functie (BerekenTotaalBedrag;) aan bij het veld aantal inschrijvingen en bij het veld cursusprijs. Ik had de functie ook aangeropen bij onLookup. Dan wordt de berekening uitgevoerd op het moment dat ik op het lookup pijltje klik. De berekening wordt niet automatisch gedaan.
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    AppieHeijn wrote:
    Ik roep de functie (BerekenTotaalBedrag;) aan bij het veld aantal inschrijvingen en bij het veld cursusprijs. Ik had de functie ook aangeropen bij onLookup. Dan wordt de berekening uitgevoerd op het moment dat ik op het lookup pijltje klik. De berekening wordt niet automatisch gedaan.

    En de functie BerekenTotaalBedrag is gedefinieerd in de tabel? Ja, lees ik net in eerdere posts. :wink:
    En de aanroep staat ook in de OnValidate van het veld "Aantal inschrijvingen" in de tabel?

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    De berekening staat onder BerekenTotaal bedrag:
    Totaalbedrag := Aantalinschrijvingen * cursusprijs;
    
    Onder de onValidate van aantal inschrijvingen, Cursusprijs en totaalbedrag staat
    BerekenTotaalBedrag;
    
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    AppieHeijn wrote:
    De berekening staat onder BerekenTotaal bedrag:
    Totaalbedrag := Aantalinschrijvingen * cursusprijs;
    
    Onder de onValidate van aantal inschrijvingen, Cursusprijs en totaalbedrag staat
    BerekenTotaalBedrag;
    

    Volgens mij hoeft BerekenTotaalBedrag alleen in de OnValidate van Aantal inschrijvingen te staan. Want Cursusprijs is een flowfield.
    En totaalbedrag bereken je.

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Dit werkt ook niet. Als ik de BerekenTotaalBedrag; onder de lookup zet van cursusprijs dan wordt de berekening wel gemaakt en het totaal bedrag getoond in het totaal bedrag veld.
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    Ik denk dat je het beste naar soortgelijke oplossing kunt kijken in standaard NAV. Kijk daar hoe het gemaakt is en vergelijk het met jouw oplossing.
    Volgens mij moet je er uit kunnen komen met de informatie die je nu hebt.

    Of je gaat even met een ander onderdeel van de module aan de slag en kom op dit probleem later terug. Dat werkt vaak het beste. Even afstand nemen. :wink:

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Daarom heb ik een ander topic geopend met de laatste dingen die ik nog moet maken. Als ik die 5 punten heb dan is in principe de module af. :D
    Navision versie: NL 3.70.B
  • tinoruijstinoruijs Member Posts: 1,226
    AppieHeijn wrote:
    Daarom heb ik een ander topic geopend met de laatste dingen die ik nog moet maken. Als ik die 5 punten heb dan is in principe de module af. :D

    8)

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • AppieHeijnAppieHeijn Member Posts: 34
    Ik heb er al weer een vraag in het andere topic... :roll:
    Navision versie: NL 3.70.B
Sign In or Register to comment.