Help: Sorteren in rapport

JopjeJopje Member Posts: 50
edited 2006-07-11 in NAV Dutch speaking only
Beste mensen,
omdat ik nieuw ben op het gebied van Navision (uitdagende stage) stuit ik zo af en toe op grote problemen. :lol:

Nu heb ik redelijk veel geleerd, maar kom ik er maar niet achter hoe ik in een report moet sorteren: :(

Item - OnAfterGetRecord
GepVoor := 0;
GroeiReferentie := 0;
Prodtot8weken := 0;
Groei := 0;
Verkoop1WeekRef := 0;

IF VerkochtAantalVJ = 0 THEN
  Groei := 0
ELSE
  Groei := (((VerkochtAantalHJ -  VerkochtAantalVJ) * 100) / VerkochtAantalVJ) / 100;

GepVoor := Item.Inventory + Item."Qty. on Prod. Order";
GroeiReferentie := (VerkochtAantalRef * (1 + Groei));
Verkoop1WeekRef := GroeiReferentie / Referentieperiodelengte;


IF (VerkochtAantalRef <> 0) AND (Groei > -1)  THEN
  Weken :=  GepVoor / Verkoop1WeekRef
ELSE
  Weken := 0;


Hiermee wordt er gebaseerd op het verkochte aantal producten in een bepaalde referentieperiode en de groei gekeken naar het jaar daarvoor, het aantal weken voorraad berekend.

Het wordt gebruikt voor "Productieplanning" om te zien welke artikelen moeten worden geproduceerd.

Nu is het handig om te kunnen sorteren op het aantal weken om zo de hoogste prioriteit bovenaan te krijgen.

Nu is mijn vraag:
Hoe kan ik sorteren op weken in het rapport,
als deze niet in een tabel staat en dus ook geen primary key is

(Nu is het zo dat mijn begeleidend docent nog vakantie heeft en ik 3 weken eerder met stage ben begonnen)
:oops: Eventuele andere suggesties natuurlijk ook welkom
Remco de Jong
Bachelor of Business Administration and Information Technology
minor Application Development


" Don't use comma (,) use dot (.) "

Comments

  • krikikriki Member, Moderator Posts: 9,112
    Je moet elke berekende lijn in een temptable opslaan. Dit gebeurt in je eerste DataItem.
    In DataItem 2 moet je op table "Integer" (een systeem tabel) baseren.
    Je zet een filter op "Number" van 1 tot zoveel records je in je temptable hebt.
    Je zet een SETCURRENTKEY op je temptable zodat je je gegevens krijgt in de volgorde dat je wilt.
    In de OnAfterGetRecord zet je:
    IF Number = 1 THEN
      tmpMyTempTable.FIND('-')
    ELSE
      tmpMyTempTable.NEXT;
    
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • JopjeJopje Member Posts: 50
    Als ik het goed begrijp dan maak ik een temp.tabel, met daarin

    "No." - Gekoppeld aan Items."No."
    Weken - C/AL Global (integer), die wordt berekend in Item - OnAfterRecord

    Tabel komt er dan zo uit te zien:
    "No." | Weken

    Dan maak ik, neem ik aan, in de temp.tabel een sortering, waardoor de "No." een andere volgorde aanneemt en de Weken (key) de juiste, zoals ik ze hebben wil.

    Dan moet ik de volgorde van de Temp "No." overbrengen in het rapport waar ik de Item."No." gebruik.
    Remco de Jong
    Bachelor of Business Administration and Information Technology
    minor Application Development


    " Don't use comma (,) use dot (.) "
  • krikikriki Member, Moderator Posts: 9,112
    Je kunt ook een bestaande tabel gebruiken om een tabel in de license uit te sparen.
    1) Je kunt bvb T27."Item" gebruiken met in "No." het artikelnummer en in "Low-Level Code" het aantal weken. Dit veld is een integer EN er is een index dat met dit veld begint.

    2)Je kunt ook een andere tabel gebruiken die niet meteen is wat je nodig hebt, maar bepaalde velden in een index heeft.
    bvb : T32:"Item Ledger Entry"
    -"Entry No." : hier moet je een uniek nr zetten (gewoon een global integer die je voor elke insert in deze tabel ophoogt en in dit veld zet)
    -"Item No." : item no. (met de index op dit veld kun je snel zoeken of een artikel al voor komt in je temptable
    -"Entry Type" : aantal weken. Dit veld is een option, maar je kunt het zonder problemen gebruiken als een integer. Om te printen, moet je dit echter wel even in een global zetten en de global printen.

    3) andere tabellen. De regel is : gebruik een tabel die de velden heeft met het juiste datatype in een index, de naam van het veld is niet van belang. Probeer geen nieuwe indexen aan te maken, aangezien die index enkel van belang is in een temptabel, maar Navision onderhoud die index echter wel in de echte tabel.

    Voor de rest van het voorbeeld, neem ik geval 1)
    OnPreDataItem:
    tmpItem.RESET;
    tmpItem.SETCURRENTKEY("Low-Level Code");
    
    SETRANGE(Number,tmpItem.COUNT);
    

    OnAfterGetRecord
    IF Number = 1 THEN
      tmpItem.FIND('-')
    ELSE
      tmpItem.NEXT;
    
    Hierna kun je de velden van tmpItem in de Sections zetten.

    PS : de global "tmpItem" moet property Temporary=Yes hebben! Dit om de gegevens in deze tabel in het geheugen te houden.
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • JopjeJopje Member Posts: 50
    Daar was ik weer, even crisis gehad bij productie dus stagiaires mochten meehelpen.

    Ik heb het allemaal even doorgenomen en getest, het werkt nu goed.

    Enkele schoonheidsfoutjes in het rapport zelf, maar dat zijn kleine zorgen. :-k

    Behoorlijk bedankt voor uitleg/bevestiging. 8-[
    Remco de Jong
    Bachelor of Business Administration and Information Technology
    minor Application Development


    " Don't use comma (,) use dot (.) "
  • rowixrowix Member Posts: 27
    Ik heb een tabel met 3 keys als je nu je report maakt kun je op die 3 keys sorteren ik heb er ook nog een option veld bij met ja en nee als waarde nu is het dus zo dat ik op ja en nee kan filteren of juist niet en kan sorteren op de 3 keys nu doet hij dit in de standaard general tab dus mensen zou den zelf er nog filters bij kunnen maken via de drilldowns.

    Nu zou ik alles wat hij standaard kan in een optie formpje willen maken d.m.v. vinkje te selecteren op ja nee of geen filter kan filtenen en sorteren op key1 / key2 of key3 zodat ik de eerste tab kan verbergen en alleen mijn eigen formpje gebruikt wordt.

    Waar moet ik dan kijken om hier meer over te vinden kom er in de handleiding niet echt verder mee.

    Met vriendelijke groet,

    Peter
  • Marije_BrummelMarije_Brummel Member, Moderators Design Patterns Posts: 4,262
    Je zou eens naar wat standaard rapportjes kunnen kijken die wat geavanceerder zijn.

    Het verbergen van de filtertab is eenvoudig te bereiken door de sortering voor het dataitem te kiezen in de properties en geen requestfilterfields op te geven.

    Je kunt dan met C/AL code de filters van je requestform toepassen.

    Wat misschien eenvoudiger is is om de gebruikersfilters te controleren en een foutmelding te geven wanneer ze verkeerde filters toepassen. Dit kan met de functies. GETFILTER of GETFILTERS.

    Succes.

    PS: Van Jopje heb ik vlaai gehad toen z;n stage erop zat dus... :mrgreen:
  • rowixrowix Member Posts: 27
    Je zou eens naar wat standaard rapportjes kunnen kijken die wat geavanceerder zijn.

    Het verbergen van de filtertab is eenvoudig te bereiken door de sortering voor het dataitem te kiezen in de properties en geen requestfilterfields op te geven.

    Dit weet ik maar kan ik dan die properties via code nog aanpassen gezien ik op 3 velden wil kunnen sorteren 1 of 2 of 3

    Alvast bedankt
  • Marije_BrummelMarije_Brummel Member, Moderators Design Patterns Posts: 4,262
    Ja, ondanks dat je de sortering opgeeft in de DataItemTableView kun je in de OnPreDataItem trigger de sortering wijzigen d.m.v. de functie SETCURRENTKEY
Sign In or Register to comment.