Autonummering valideren

Status
Niet open voor verdere reacties.

nieuw104

Gebruiker
Lid geworden
17 sep 2009
Berichten
9
Kan iemand mij vertellen of het mogelijk is de validatie van een autonummeringsveld zo aan te passen dat het b.v. begint met 09 (het jaar) 01 (de maand) en dan het automatisch gegenereerde volgnummer.
Of met een letterreeks en dan het autonummer.

Alvast bedank voor jullie reaktie
 
Nee, dat kan niet.
Autonummer is een betekenisloos nummer dat je niet op een dergelijke manier kan beinvloeden.
De nummering die jij voorstelt is niet meer betekenisloos.
Wat jij wilt dat kan wel, maar niet met een autonummer veld.
Je zult dan zelf in VBA een stukje logica moeten programmeren om dit realiseren.
 
Kleine aanvulling: je hoeft zoiets niet te programmeren, je kunt een nummer ook genereren in een query m.b.v. de functie DMax bijvoorbeeld.
 
Kleine aanvulling: je hoeft zoiets niet te programmeren, je kunt een nummer ook genereren in een query m.b.v. de functie DMax bijvoorbeeld.

Ben benieuwd hoe je dat aan zou pakken.
Kun je een voorbeeldbestandje maken?

Grtz,

Tardis
 
Ik moet bekennen, dat het nummer automatisch invoegen in een tabel wat lastiger is dan ik in eerste instantie dacht :o
Desalniettemin, doe je e.e.a. uiteraard via een formulier, en daar is de oplossing wel (relatief) simpel. Zie voorbeeld.
 
Laatst bewerkt:
@Michel,

da's een mooie aanpak.

Opmerking, HAVING staat niet bekend om zijn performance.
Gebruik een WHERE clause.

Vraag, hoe de query aan te passen zodat deze een "eerste" bonnummer uitgeeft (er zijn nog geen bonnummers uitgegeven)?

Grtz,

Tardis
 
Dat van de WHERE is inderdaad waar, al heb ik daar eerlijjk gezegd voor het voorbeeld niet over nagedacht; ik wilde de query eerst werkend hebben. Desalniettemin: goede opmerking!

De formule voor het bonnummer moet inderdaad aangepast worden voor de situatie dat je aan een nieuw jaar begint.
Ik heb er maar gelijk een tellertje van gemaakt die per maand opnieuw begint te tellen, voor Nieuw104.

Code:
SELECT Year(Date()) & Format(Month(Date()),"00") & Format(Nz(Max(Val(Right([BonID],3))),0)+1,"000") AS BonNr
FROM tBestellingen
WHERE ((Left([BonID],4)=Year(Date())) AND (Month([Datum])=Month(Date())));

De aanpassingen zitten ook in het nieuwe voorbeeld.
 

Bijlagen

In een multi-user omgeving deze oplossing niet gebruiken. Kans op dubbele 'bonID'
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan