automatische unieke nummering dmv een code van 5 tekens

Status
Niet open voor verdere reacties.

vis ta

Terugkerende gebruiker
Lid geworden
31 mei 2007
Berichten
3.253
Ik zet momenteel mijn eerste stappen in acces en ben bezig met een soort adressenbestand.

Nu wil ik in de eerste kolom van de tabel een unieke code per record dat automatisch gegenereerd wordt. Zodat ik extra eigenschappen die niet tot de accestabel behoren kan toewijzen aan die code.

Die code mag gerust wartaal zijn, maar moet uniek zijn per record.
Liefst bestaande uit 5 tekens (letters en cijfers zijn ok), dan kan ik al 60 miljoen combinaties maken, dus dat lijkt me zeker voldoende.

Maar hoe pak ik het aan? Wat moet ik als gegevenstype instellen, wat zet ik bij algemeen en wat doe ik achteraf nog?

Dus als ik begin aan een nieuw record moet het automatisch gegenereerd worden, een 'wartaal'-code zoals bijvoorbeeld KQ5I6
 
Autonummering

Je kunt het gegevenstype van een veld instellen op autonummering, dan wordt er automatisch een uniek nummer toegekend.
 
Als ik dat doe komt er bij het eerste record een 1.

Dit bestaat echter niet uit 5 tekens en bevat helaas geen letters:s
 
Wel uniek

Het is echter wel een uniek nummer, dat was toch wat je wilde?

Als je je eigen nummeringssysteem wilt, dan zul je dit zelf moeten programmeren in VBA. Voer het veld dan uit als tekst en schrijf in je formulier een gebeurtenisprocedure voor invoegen, of voor bijwerken waarin je het nieuwe nummer genereert en invult in het tekstveld.
 
Ja ok, nummering zorgt voor een unieke code maar ik heb dan geen letters die mee worden gebruikt en ik heb graag dat de code per se uit 5 tekens bestaat.

Is er geen simpele oplossing, iets met die primaire sleutels ofzo? Zoja, hoe doe ik dat?
Zonee, hoe doe ik dat in VBA?

Zoals ik al zei, dit is een van m'n eerste acceservaringen:s
 
Bij autonummering heb ik wel nog twee opties zie ik, het bestaat dan niet per se uit 5 tekens, maar is wel een unieke code met dezelfde aantal tekens zou ik denken:

1. Veldlengte: lange integer
Nieuwe waarden: willekeurig
Geïndexeerd: Ja (Geen duplicaten)

Of:

2. Replicatie-id
Geïndexeerd: Ja (Geen duplicaten)

Accesexperts, welke methode is de beste of is er nog een betere oplossing?

Ik wil wel dat als ik bijvoorbeeld een record zou wijzigen het onmogelijk is dat de unieke code die daarmee wordt verwijdert opnieuw zou worden toegewezen aan een toekomstig record. Dus ook voor verwijderde records moet de code uniek blijven.
 
Waarom?

De redenen die je noemt voor je eigen code worden allemaal afgedekt door standaard autonummering. Zolang we niet weten waarom je 5 tekens nodig hebt en waarom daar cijfers en letters bij moeten zitten, is het moeilijk verder advies te geven.

Standaard autonummering begint bij 1 en nummert dan oplopend verder. Eenmaal gebruikte nummers worden niet nog eens gebruikt ook al wordt het record niet opgeslagen of later weggegooid. Willekeurige nummering is hetzelfde, maar dan begint het niet bij 1 loopt niet netjes op, willekeurig dus. Replicatie-id probeert niet alleen uniek te nummeren voor de database waarin je werkt, maar ook nog eens uniek over de verschillende replica's in de replicaset waar je in werkt. Je kunt dit als een uniek nummer beschouwen voor records in deze tabel over alle database-bestanden heen.
 
Nou, de reden dat ik vijf zeg is omdat ik zeker genoeg mogelijkheden zou hebben. De reden waarom ik een vast aantal cijfers/letters wil: om verwarring te voorkomen als ik de code ergens anders ga gebruiken. Het moeten niet per se cijfers en letters zijn, dat was gewoon leuk geweest want dan had ik nog meer mogelijkheden gehad met minder tekens. Maar als ik zo een unieke nummering krijg is het ook goed.

Maar als ik het goed begrijp is het een goed idee dat ik die replicatie-id neem zodat hij ook buiten de tabel waarin ik werk niet dezelfde code kan voorkomen en vergissen zeker uitgesloten is (stel dat ik ooit nog een andere tabel of database zou maken).

Of zijn er ook nadelen aan de replicatie-id waardoor ik toch beter voor de willekeurige nummering ga?
 
Replicatie ID

Alleen over andere databases in de zelfde tabel, bij repliceren. Dus niet in een andere tabel. Natuurlijk heeft een repl.id ook weer nadelen, bijvoorbeeld langzamer, maar dat spreekt voor zich.
 
Ow. Nou dan kies ik misschien beter voor dat andere aangezien het eigenlijk al is wat ik nodig heb, een unieke code die automatisch wordt toegewezen aan elk record en die een vast aantal cijfers bevat?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan