Bruno Posted June 21, 2006 Share Posted June 21, 2006 Om orders mooi op elkaar te laten volgen wil ik volgnummers via een script laten opmaken zodat ze altijd op mekaar volgen. Bij Auto Entry heb je het probleem dat als de laatste wordt gewist het systeem gewoon doornummert. Wat is de beste methode ? De nummer moet er als volgt uitzien: ORD-0000001 Merciekes Quote Link to comment
0 Sanne Posted June 21, 2006 Share Posted June 21, 2006 (edited) De beste methode is het aanmaken van records en het verwijderen van records te scripten. Dat betekent ook dat je het de gebruikers onmogelijk moet maken om de menu-opties voor het maken en verwijderen van records te gebruiken. Dit is de enige manier om absolute zekerheid over het volgnummer te verkrijgen. Het volgnummer kun je vervolgens in een global opslaan. Elk nieuw record wat gemaakt wordt, zal via het script het volgnummer eentje ophogen en dat opgehoogde nummer aan het nieuwe record geven. Elk record wat verwijderd wordt, checkt of dit het nummer heeft wat als laatste is gebruikt, en als dat zo is, dan zal het script het volgnummer weer eentje verlagen. ----------------------------------- Kun je het veroorloven om iets losser met die zekerheid te zijn, dan is dit een alternatief: Je kunt overwegen om iets te doen met de max-functie. Je moet dan een altijd-werkende-relatie maken met het veld waarin de volgnummers staan. Dan maak je een calculatie-veld genaamd "Max_Volgnummer_c" die over die relatie het hoogste nummer pakt, met de max-functie. Bij het veld Volgnummer zet je de auto-enter van een calculated value aan, met overschrijven. En de formule daar is: Max_Volgnummer_c + 1 Voordeel: een nieuw record krijgt altijd het nummer volgend op het hoogst aanwezige nummer Nadeel: wordt een tussenliggend record verwijderd, dan wordt het tussenliggende nummer niet opgevuld. ________________________________________ Edited June 21, 2006 by Guest Quote Link to comment
0 burggraaf Posted June 21, 2006 Share Posted June 21, 2006 (edited) Een optie is om het te doen met de max() functie. Hierbij wordt de waarde van een teller bij een neiuw record opgehoogd met max(teller_nummer)+1. Bij hele grote hoeveelheden records is het echter niet aan te bevelen. Edit: Oeps, Sanne was net iets eerder... Edited June 22, 2006 by Guest Quote Link to comment
0 Sanne Posted June 21, 2006 Share Posted June 21, 2006 Ja, maar Burggraaf, je brengt me wel op een idee: het calculatie-veld met de max-formule is niet nodig, want dat kun je inderdaad direct als auto-enter invullen: Max(TO_MaxVolgnummer::Volgnummer) + 1 Nadeel: niet aan te bevelen bij grote hoeveelheden records. Nadeel: er moet een Tabel Occurence voor worden gemaakt in de Relation Graph. Quote Link to comment
0 Peter Wagemans Posted June 22, 2006 Share Posted June 22, 2006 Bruno stelt niet dat het met een calculatie moet, hij genereert nieuwe orders via een script. Alternatief is om een tabel te maken waar je counters bijhoudt. Bij een nieuw record hoog je die op, bij het wissen verlaag je die counters. Voordelen van deze benadering: 1. sneller dan de max() functie voor grote hoeveelheden 2. je kan verschillende counters aanmaken; per jaar (gebaseerd op factuurdatum), per soort (bij facturen: denk aan credit nota nummering die verschillend moet zijn van factuurnummering) Weliswaar moet je elke manuele record creatie en wis ondervangen, dus desactiveer die best in je menu structuur - hopelijk gebruik je de Advanced versie. Quote Link to comment
0 rgaros Posted June 22, 2006 Share Posted June 22, 2006 Om orders mooi op elkaar te laten volgen wil ik volgnummers via een script laten opmaken zodat ze altijd op mekaar volgen.Bij Auto Entry heb je het probleem dat als de laatste wordt gewist het systeem gewoon doornummert. Wat is de beste methode ? De nummer moet er als volgt uitzien: ORD-0000001 Uhuuu, waarom geen getal veld met automatisch ingevoerd volgnummer? Waarom via een script? René Quote Link to comment
Question
Bruno
Om orders mooi op elkaar te laten volgen wil ik volgnummers via een script laten opmaken zodat ze altijd op mekaar volgen.
Bij Auto Entry heb je het probleem dat als de laatste wordt gewist het systeem gewoon doornummert.
Wat is de beste methode ?
De nummer moet er als volgt uitzien: ORD-0000001
Merciekes
Link to comment
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.