Eerst volgende autonummer

Status
Niet open voor verdere reacties.

gcjvanbeek

Gebruiker
Lid geworden
27 nov 2006
Berichten
164
ls,
Ik heb voor een functie het eerstvolgende autonummer van een tabel nodig. Dat lijkt simpel. Definieer van de tabekl een recordset, ga via : MoveLast naar het laatste record en lees het autonummer uit. Hoog dat met 1 op en je hebt het eerstvolgende nummer. Echter hoe vind je dat nummer als toevallig het laatste of meer records zijn verwijderd?
Is er een speciale instructie voor?
Apestaart
 
Op de manier die jij beschrijft.
Of (beter) door de Max functie te gebruiken en daar 1 bij op tellen.

Dat er gaten in de autonummering zitten doet niet te zake.

Waarom vraag je dit trouwens?
Autonummering is namelijk en niet bedoeld en niet geschikt als volgnummer.
Autonummering is puur en alleen bedoeld om gegevens binnen tabellen uniek te identificeren.
Als je volgnummers wilt gebruiken, schrijf daar dan zelf een stukje code voor.

Tardis
 
Een Autonummer wordt automatisch aangemaakt door Access op het moment dat je een nieuw record aanmaakt. Dit nummer is in beginsel (logischerwijs) 1 hoger dan het laatste nummer. Echter: als je een record aanmaakt, en niet opslaat, ben je dat nummer kwijt. In dat geval wordt het eerstvolgende nummer toegewezen aan het nieuwe record. De beschreven tips om het eerstvolgende autonummer zelf te berekenen gaan dus niet werken. Noch <Movelast>, nog <Max+1> geven je de zekerheid dat je ook het eerstvolgende aan te maken nummer vindt. Om de nummering in de hand te houden, is het dus beter om het nummer zelf te genereren dan te vertrouwen op Autonummer.
Overigens verwijdert Access de niet-gebruikte (laatste) autonummerwaarden zelf uit de tabel als je de actie <Comprimeren en Herstellen> uitvoert. Stel dat je in een tabel een laatste recordnummer hebt van 12. Je voegt om te testen 3 records toe, die dus de nummers 13, 14 en 15 krijgen. Vervolgens verwijder je deze records weer. Als je nu met Max het hoogste nummer opvraagt, krijg je de waarde 12. Voeg je echter een nieuw record toe, dan krijgt dit record het nummer 16, want dat was het eerstvolgende beschikbare nummer. Dat wil je eigenlijk niet, je wilt 13 weer gebruiken.
Als je de db dus na het verwijderen van de 3 records had gecomprimeerd, dan was het eerstvolgende nummer weer 13 geweest in een nieuw record.
Je kunt het dus wel 'berekenen', maar het vereist een zekere discipline om de tabellen 'schoon' te houden.
 
Laatst bewerkt:
Autonummering

Bedankt OctaFish voor je duidelijk antwoord. Ik ga een veld toevoegen en het rangnummer genereren.
Schiet me ineens te binnen dat ik wellicht ook record count kan gebruiken, ga dat proberen.
Apestaart
 
RecordCount werkt ook alleen als je geen gaten hebt in de nummering. Ik zou met Max of DMax werken om het hoogste nummer in te lezen, en met 1 te verhogen. Lijkt mij de veiligste manier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan