Ontbrekende nummers weergeven

  • Onderwerp starter Onderwerp starter jog
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jog

Gebruiker
Lid geworden
4 mrt 2009
Berichten
69
Hallo,

mijn tblPersoonsgegevens bevat een veld met LidNr welk ik zelf invul (een sleutel). In mijn formulier heb ik een veldje gemaakt waarin het laatst (Max) toegevoegde nummer vermeld wordt, zodat ik het volgende lid een nummertje meer geef.
Wanneer ik nu een lid verwijder bv. LidNr 10 moet ik manueel door de lijst van leden bladeren of opschrijven welk LidNr er vrij is gekomen.
Het zou interessant zijn om in de lijst van LidNr het laagst vrijgekomen nummer weer te geven in een veldje op het formulier. (zoals nu het laatst toegevoegde LidNr).

Is dit mogelijk en hoe pak ik dit het best aan?

Alvast bedankt
 
Dag Jog,

Als eerste adviseer ik het om het simpelweg niet te doen en verder te gaan met de nummering. Je hoeft je niet druk te maken om gaten in je nummering, dat is normaal. Primary keys zijn min of meer altijd uniek. Als je een key eenmaal gebruikt hebt, gebruik hem dan niet weer overnieuw. Om maar een van de velen voorbeelden te noemen: elk bedrijf met personeelsnummers hanteert de nummering op die manier ook, insert niet op lege plekken en gaat door met de nummering.

Wil je alsnog deze gaten vullen (doe het alsjeblieft niet :p), doe het dan op deze manier:
Count het aantal rijen in een gedeclareerde variabele (bijv integer aantalRijen).
Loop met bijv. een integer i vanaf 1 tot aan het laatste nummer van de count.
Zodra i < aantalRijen --> de plek is vrij, insert op deze vrije plek en stap uit de loop.
Komen we uit de loop zonder enige aanpassing? --> Insert op de MAX +1.

Ik hoop dat je hier wat aan hebt.

Vriendelijke groet,

Bart
 
Laatst bewerkt:
Bart geeft wel het belang aan om oudere nummers niet opnieuw te gebruiken, maar geeft in zijn voorbeeld niet aan waarom je dat niet moet doen. Dat bedrijven het niet doen is leuk, maar geen uitleg van de problemen die je jezelf op de hals haalt.
De belangrijkste reden om nummers niet opnieuw te gebruiken, is dat je in je database ongetwijfeld allerlei transacties vastlegt, die dan zijn gekoppeld aan de personen in je Personentabel. Een persoon in die tabel heeft dus een geschiedenis opgebouwd, is het met bestellingen als je goederen levert, of is het contributie als je een ledenadministratie bijhoudt. Gaat iemand weg, dan wil je doorgaans die historie niet kwijtraken. Een bedrijf dat goederen verkoopt zal de transacties van die persoon/klant willen houden, omdat anders de boekhouding niet meer klopt.
Als je een nummer dus hergebruikt, dan krijgt de persoon die je op dat klantnummer zet, automatisch de historie van de vorige persoon. En dat mag natuurlijk nooit de bedoeling zijn!
Kortom: wat je doet met vertrekkende/niet-actieve klantrecords, is om ze te archiveren middels een selectievakje bijvoorbeeld, zodat je ze wegfiltert uit de actieve keuzelijsten/overzichten, maar ze wel behoudt. Dus ik zou ze zelfs niet eens weggooien; tenzij je ze per abuis aanmaakt, en er dus ook nog geen historie is opgebouwd.
 
Daar ben ik het gedeeltelijk mee eens. Ik heb dat voorbeeld niet genoemd aangezien je normaliter correct iets verwijderd uit een database ook alle koppelingen daaraan keurig wegwerkt. Op die manier zou het wel mogelijk zijn om dezelfde ID te gebruiken, maar zoals Octafish al aangeeft, het kan een hoop gedoe opleveren als het verwijderen van overige gevens niet of niet correct gebeurd. Het onderhouden van je database kan dan een grootse taak zijn terwijl je juist wil dat alles zo simpel mogelijk blijft verlopen.

Vriendelijke groet,

Bart
 
ok heren,

bedankt voor deze verhelderende uitleg.
Ik zal inderdaad een selectievakje bijmaken om de de records weg te filteren.

Bedankt voor de snelle en duidelijke uitleg :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan