nummer ophogen

Status
Niet open voor verdere reacties.

Janzan

Gebruiker
Lid geworden
10 jan 2012
Berichten
61
Hallo allemaal,

Ik heb (weer)een vraag.

Ik moet aan een betsaande tabel, die ik koppel aan mijn eigen database en formulieren, soms een record toevoegen.
In de tabel wordt gebruik gemaakt van bonnummers die bestaan uit een aantal letters en cijfers.
In dat veld wil ik als ikzelf een record aan de tabel toevoegt de code DV1 en dan bij de volgende DV2 etc laten invullen door mijn eigen formulier.
Nu wil ik graag dat mijn formulier zelf de nummers maakt, en dus opgehoogd.
Ik had bedacht om een tabel(tblNummer te maken met 1 veld, met de naam nummer.
Dat veld moet worden uitgelezen, in het formulier worden geplaatst, en bij het sluiten van het formulier dus samen met de andere gegevens weg worden geschreven naar de tabel, EN het nummer in de tabel nummer moet met 1 worden opgehoogd.

Tot zover mijn gedachten......maar nu, hoe pak ik dat aan met de code etc?, heeft er iemand een voorbeeldje?

b.v.b dank!
 
Je gedachte klopt niet, er is geen enkele noodzaak om daarvoor een aparte tabel te maken; ik zou op het formulier een DMAX functie maken, al ben je een beetje afhankelijk van de nummercode. Als dat altijd ofwel uit de letters DV+Nummer bestaat, of altijd uit twee letters + een getal, dan is het simpel. Heb je de ene keer DV als code, en een andere keer VAQ, dan heb je een probleempje erbij. Uitgaande van twee letters: Met DMAX ziet dat er dan ongeveer zo uit:
Code:
="DV" & Format(CInt(Mid(DMax("[Nummer]";"[TabelNaam]");3))+1;"000")
 
ik had hier op het forum over die Dmax functie gelezen.
Maar ik begreep dat deze functie kijkt naar het hoogste getal in het veld nummer (in mijn geval) en daar 1 bij optelt.
Mijn veld bevat echter een combinatie van letters en cijfers....soms 3 letters en 3 cijfers, maar soms ook hele andere combinaties.
Bovendien zijn het niet altijd unieke combinaties.
1 bonnummer (kenmerk is misschien een betere aanduiding) kan meerdere keren voorkomen, en in combinatie met het veld volgnummer, datum en tijd wordt het dan weer een uniek record.
Zo heb je dan een bon AA123 meerdere keren, maar met volgnummer 1 2 3 etc.
De tabel is dus een soort verzameltabel...na verwerking door een extern programma komt alles in deze tabel terecht.
Die tabel gebruik ik om voor mij relevante data te filteren, en ik wil dus ook data toevoegen aan die tabel, waarbij ik het kenmerk uniek wil houden.

Ik wil dus een heel eigen uniek kenmerk meegeven wat niet gebonden is aan wat er voor de rest allemaal aan kenmerken in dat veld in die tabel staat.
Vandaar mijn gedachte om dat kenmerk in een tabel onder te brengen en daar uit te lezen en in het formulier te plaatsen en uiteindelijk in de verzameltabel te plaatsen.

Misschien dat mijn verhaal en de oplossing die ik zoek nu wat duidelijker is.
 
je begrip van de functie DMax is inderdaad verkeerd; DMax kijkt naar de hoogste waarde in een veld. Dat kan een numeriek veld zijn, of een alfanumeriek veld, dat maakt in beginsel niet uit. De code die ik hierboven heb neergezet is dan ook een vertaling van een uitwerking op basis van jouw voorbeeld, waarbij ik (da's het nadeel van een alfanumeriek veld) wel een nummer creëer op basis van een nummer met voorloopnullen. In een numeriek veld is de volgorde simpel: 1;2;3...9;10;11;12...;98;99;100;101 etc. In een Alfanumeriek veld (met tekst erbij) is dat heel anders; de sortering (en opzoeken van hoogste waarde) zou dan eerder zo zijn: VD1;VD11;VD111;VD12;VD121;VD2 etc. De nummering wordt dus beoordeeld op de volgorde van de tekens, niet op de waarde. Vandaar het gebruik van voorloopnullen.
Uiteraard kun je een nummer als VD108 niet verhogen met 1; wel kun je (en dat doet de code) het cijfer 108 er uit filteren, en dat ophogen tot 109. Vervolgens combineer je dat nieuwe nummer met de tekst VD, en je hebt een volgnummer gemaakt.
Dat je nummer niet uniek is, maakt voor het opzoeken en ophogen niet uit. Dus hoe je het nieuwe volgnummer zelf verwerkt tot een uniek nummer, ook niet.
 
Ik heb die tabel en het betreffende veld nog eens doorgespit.
Het komt dus voor dat het kenmerk geheel uit cijfers bestaat, maar ook geheel uit letters, en ook een combinatie van beide is aanwezig.
Soms 3 cijfers en 3 leters, soms 1 cijfer en 5 letters etc etc.
Is jouw code dan nog steeds bruikbaar?, want zelf begrijp ik het nog niet helemaal :o
 
Nee, dan is de code nauwelijks bruikbaar. Overigens lijkt me die code dan niet bepaald het toonbeeld van een constante nummerstijl :) En dat lijkt mij toch wel één voorwaarde voor een unieke nummering. Maar dat moet je uiteraard helemaal zelf weten. Zoals ik al eerder zei: het automatisch oplopend nummeren is prima te doen als er een constante is in de nummerstijl. Is die er niet, dan wordt het een procedure in VBA, die behoorlijk (in mijn ogen nodeloos) ingewikkeld is, omdat je allerlei varianten moet afvangen voordat je een nieuw nummer kan genereren.
 
nummerophogen

Janzan,

Geeft het een probleem als je een extra veld in je tabel moet opnemen,
Je kan met een extra veld waarin je het ophoognummer plaatst elke willekeurig waarde een ophoognummer geven.
 
Bedankt allemaal voor de reacties.
Het is inmiddels opgelost met een extra tabel waaruit ik met dmax het hoogste nummer uitleest en ophoogt en dat via mijn formulier weer samen met de andere gegevens wegschrijft naar de verzameltabel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan