automatisch code genereren. (soort Autonummering)

Status
Niet open voor verdere reacties.

allard1977

Gebruiker
Lid geworden
7 feb 2011
Berichten
215
Hallo allemaal,

Mijn eerste vraag is hoe kan ik een protocolcode automatische uit voeren. wat ik graag zou willen is yy-LL00000-00 dus jaartal-tweeleters5cijfers-twee cijfers.
Het jaartal kan hij generen uit het systeem lijkt mij en in plaats van 4 de laatste twee getallen.
De twee leters.
Deze wil ik standaard hebben. Maar zij je deze ook kunnen generen uit een dropdown op het formulier.Dropdown zit nog niet bij bestand.
De 5 getallen zijn volg nummers. maar als je een batch in voert moeten deze het zelfde blijven als ze natuurlijk het zelfde protocol hebben gevolgd. maar mag nooit veder meer voorkomen.
de laatste twee cijfers zijn volg nummers die in een batch oplopen.
dus je kan de volgende nummer krijgen. 13-LL000001-01 13-LL00005-01 t/m 13-LL00005-06.

Als dit kan komt de tweede vraag, mijn database is al een 7 tal jaren oud en we gaan hem nu veder uitbreiden waardoor ik dus protocolcodes wil gaan gebruiken. maar hoe zal ik het doen met de oude data wat in de tabel staat. zit zelf te denken aan een code. en dan vanaf de nieuwe data nieuwe codes.

ik ben al wat aan het stoeien geweest met de codes die ik hier op het forum heb gevonden maar kan het niet voor elkaar krijgen zoal ik het wil. ik krijg 13-DN00000, maar ze worden niet opgeteld en ik mis mijn -00 nog.

Zou iemand mij kunnen helpen.
met vriendelijke groet Allard

http://www.mijnbestand.nl/Bestand-Z8DSRVKQYTLW.accdb
 
ik denk dat je één extra tabel (tbl_ProtocolNummering) moet aanmaken waarin je het volgende bijhoudt:
PNr_ID: autonummering (hierdoor wordt je tabel uniek)
PNr_InternProtocol_ID : Numeriek (Wat is het ID nummer van je protocol = Acces autonummering)
PNr_Jaar: Nummeriek (In welk jaar is je protocol aangemaakt)
PNr_ProtocolGroep: Numeriek (Dit verwijst naar je keuze van je dropdown-keuze. Ik kies hier bewust voor een nummer ipv twee letters. Als je later je lettercombinatie wil aanpassen dan hoef je dat maar op één plaats te doen en dat is de tabel waarin je bijhoudt welke protocolgroep welke letter krijgt.)
PNr_Nummer: Numeriek (hier komen je 5 cijfers te staan.)
Prn_Volgnummer: Numeriek (hier komt je volgnummer te staan)

Dit lijkt in eerste instantie omslagtig, maar het maakt het programmeren een stuk makkelijker.

Ik hoop dat ik je zo een beetje opweg heb geholpen
 
Heel erg bedankt voor uw tips, ik zal proberen om dit eens inelkaar te zetten wordt vervolgd.
Groet allard
 
tabel gemaakt

Beste,

Ik heb de tabel gemaakt. Maar ik heb toch een aantal vragen,
waarom een jaar veld maken, zoals in de code die ik gebruik word het uit het systeem gehaald.
de protocolGroep zou ik toch liever in letters willen is makkelijker voor onze codering.
En hoe kan je nu toch de zelfde bach nummers krijgen want als de lijst uniek is kan je geen zelfde getallen krijgen. dus hoe krijg je 13-dn10042-01 t/m 13-dn10042-05.

En ik ben niet zo sterk in vba. dus dat word nog een grote puzzel:confused:.

groet Allard
 
Ik heb bewust het jaar veld er bijgedaan zodat je ook je oudere protocollen kunt dateren.
Ik heb de protocolgroep in cijfers gezet zodat je deze kunt later verwijzen naar een andere tabel waarin je bijhoudt wat de protocolgroepen zijn. Dit ivm flexibiliteit en het is ook makkelijker aantevullen. Hierdoor hoef je maar op EEN plaats je protocolgroepen te wijzigen als deze ooit veranderen.
De dropdown keuze van je formulier is dan weer een query uit je tabel van je ProtocolGroepen.
Ik ga er voor het gemak vanuit dat je uiteindelijk een selectie maakt uit je protocolen en dan pas de batch procedure gaat aanroepen.
In deze procedure gaat dan pas je volgnummer ophogen.

Begrijp je het nog???
 
sorry dat ik zo laat reageer maar beetje te weinig tijd gehad afgelopen dagen. ja ik begrijp je heel goed.
En inderdaad eerst jaar, protocol,batch,volgenummer. in deze volgorde oproepen.
Maar ik denk dat ik voor de oude protocollen een vaste code ga gebruiken want anders heb ik een half jaar extra werk miet uitzoeken.
 
Laatst bewerkt:
Ik heb hier een eenvoudig opzetje gemaakt. Dit is nog niet perfect, maar wel werkend.
Vanuit het formulier frm_Overzicht_Protocollen kun je de protocollen nummeren.
Op het formulier kun je meerdere protocollen selecteren zodat je ook volgnummers kunt maken.
Kijk er naar en ik hoor het wel.
 

Bijlagen

databasese protocol nummering.

Beste Madref,

Ik heb zitten spelen met jou test database. Het werkt inderdaad goed. Maar ik zou het toch graag iets anders hebben.
Je opent nu frm_overzicht protocollen dit is perfect en daarna de groep er aan vast zetten (doormiddel van knop nummeren) vind ik ook erg goed.
maar wat ik graag zou zien is dat ik een protocol selecteer en daarna de protocol groep maar daarna het aantal sampels zodat, het pn_nummer het zelfde blijft voor het aantal sampels, en dat het volgnummer op loopt aan het aantal samples.
Ik heb naast uw testdatabase zelf een gemaakt misschien kunnen we dit samen voegen zodat het goed werkt. :confused:
http://www.mijnbestand.nl/Bestand-8UYE7ALMHBJ3.accdb
Alvast heel erg bedankt voor de medewerking.

Vriendelijke groet Allard
 
In de db die je meelevert zit wel een functie, die wel zal werken, maar verder toch niet zo bar veel. Op basis waarvan moet het nieuwe nummer worden gegenereerd? Hoe geef je aan hoeveel exemplaren je wilt hebben? Waar moeten de sequentionele nummers worden opgeslagen? Ik mis een knop met een toevoegquery bijvoorbeeld. Voor mijn gevoel ben je in de afgelopen 3 weken niet bijster opgeschoten :)
 
code genereren

hallo,

Uhm niet opgeschoten dacht ik:shocked:, nou dan klopt er iets niet. Dus ik database gedownload en ja hoor verkeerde gestuurd:o. dus bij deze de nieuwe.
http://www.mijnbestand.nl/Bestand-LFC8LW64TH4W.accdb
ik zou graag de volgende velden combineren naar een veld.
PNr_jaar
PNr-protocolgroep
PNr_internprotocol_id
PNr_Nummer
PNr_volgNummer
en dan in de volgende volgorde,
PNr_jaar-PNr-protocolgroep;PNr_Internprotocol_ID;PNr_Nummer-PNr_volgnummer.

Ik hoop dat het nu wat duidelijker is. sorry voor het foutje.
 
Ja dat dacht ik al maar hoe kan je het doen met een nummeric veld. als ik het doe met een + worden ze opgeteld. dtabelus weet nu niet zo goed hoeik de query veder moet opbouwen.
wat ik gedaan heb is een qeury gemaakt van de tabel. en in een lege kolom van de query =[a]+ en a en b staan voor de veldnamen?

groet allard
 
Je hebt nog steeds een Toevoegquery nodig of een routine die m.b.v. een recordset en AddNew een aantal nieuwe records toevoegt aan je tabel. Het genereren van alleen nummers doet namelijk niet zoveel, als je geen records maakt waarin je de nummers opslaat.
 
Beste octafish,
Als je toch het formulier gebruikt formprotnr dan ga je toch nummers generen. deze komen althans bij mij in de tabel.
en ik heb net uit gevonden als je een qeury maakt van de tabel en je zet in een lege kolom =[PNr_jaar]&[PNr-ProtocolGroep] dan worden ze al samen gevoeg. nu allen het jaar veranderen in twee cijferig dan kom alles goed. denk ik.
 
Het zal wel aan mij liggen, maar ik vind de tabel [tbl_ProtocolNum] waarin je de gegevens opslaat licht chaotisch. En ik zie al helemaal geen veld om het gegenereerde nummer in op te slaan. En dat lijkt mij toch wel noodzakelijk als je iets wilt opslaan: dat er een veld voor is!
Verder klopt er maar bar weinig van de nummering, als je deze voorbeeld gegevens bekijkt:

PNr_ID PNr_Jaar PNr_ProtGrp PNr_IntProtID PNr_Nr VolgNr PNr_dte PNR-r_NWVolgNummer
100 2011 5 5 34 38 27-02-13 Waar
101 2011 5 5 34 39 27-02-13 Waar
102 2011 5 5 34 40 27-02-13 Waar
103 2011 5 5 34 41 27-02-13 Waar
104 2011 5 5 34 42 27-02-13 Waar
36 2012 2 4 13 5 27-02-13 Onwaar
37 2012 2 4 14 5 27-02-13 Onwaar
38 2012 2 4 15 6 27-02-13 Onwaar
39 2012 2 4 16 6 27-02-13 Onwaar
40 2012 2 4 17 7 27-02-13 Onwaar
41 2012 2 4 18 7 27-02-13 Onwaar
120 2012 3 2 38 52 12-03-13 Onwaar
14 2013 2 4 4 Onwaar
28 2013 2 4 10 27-02-13 Onwaar
45 2013 2 4 21 9 27-02-13 Onwaar
46 2013 2 4 22 10 27-02-13 Onwaar
47 2013 2 4 23 11 27-02-13 Onwaar
13 2013 3 2 3 Onwaar
15 2013 3 2 5 1 Onwaar
16 2013 3 2 5 2 Onwaar
17 2013 3 2 6 3 Onwaar
29 2013 3 2 11 27-02-13 Onwaar
117 2013 3 2 37 51 12-03-13 Onwaar
105 2013 4 6 35 43 27-02-13 Waar
106 2013 4 6 35 44 27-02-13 Waar
107 2013 4 6 35 45 27-02-13 Waar
108 2013 4 6 35 46 27-02-13 Waar
109 2013 4 6 35 47 27-02-13 Waar
110 2013 4 6 35 48 27-02-13 Waar
Ik zou zeggen dat elke combinatie met 1 moet beginnen en oplopen per batch. Daar is hier absoluut geen sprake van, en in je code wordt dat ook niet afgedwongen.
Dus wederom de vraag: wat is de bedoeling?
 
Beste octafish,
dit is een ten eerste een voorbeeld database. Er zijn rijen uit verwijderd. waardoor het chaotisch lijkt
En ja inderdaad het zou mooier zijn om bij iedere bach met een te beginnen (PNr_VolgNummer). En het zou ook denk heel netjes zijn op bij ieder jaar ta te beginnen met een nieuw bach nummer (PNr_Nummer). Maar heb een geen flauw idee hoe je dat zal moeten doen.
En wou u de code in de zelfde tabel opslaan. Ik kan daar zeker een veld bij maken, maar hoe ik dan het nummer dat gecreerd is daar moet krijgen is voor mij een klein raadsel. Ik krijg dus in de query wel een gecreerd nummer te zien maar niet in mijn tabel.
 
Als je een voorbeeldje post, dan is het wel zo plezierig als dat enigszins overeenkomt met een reële situatie. Wij kunnen namelijk niet ruiken hoe je db er in werkelijkheid uitziet; wij moeten het doen met wat jij ons aanlevert. En als dat allerlei vragen opwerpt die dus niet nodig zijn als je een goed voorbeeld aanlevert, dan scheelt dat heel wat tijd. En dat lijkt mij voor jou een stuk belangrijker dan voor ons, want wij hebben het probleem niet. Het is dus in jouw belang om ons zo goed mogelijk van informatie te voorzien.

Zelf zou ik maar één veld gebruiken, het veld dat je dus niet hebt. En de overige velden zijn in mijn ogen overbodig (want leveren dataredundantie op). Nu misschien nog wel handig om te controleren of je goede nummers genereert, maar in wezen dus overbodig: de combinatie van alle velden levert één uniek nummer op, en meer heb je niet nodig. En dat is dus mijn probleem met je db: je wilt een volgnummer genereren voor een batch (in mijn ogen is dat een opvolgende serie records, maar dat zou er ook 1 kunnen zijn).
Vanuit één veld met een uniek nummer kun je vrij simpel een nieuw nummer genereren, door het nummer op te splitsen en op basis daarvan de hoogste waarde te zoeken. Tenminste: als je volgnummer een vast stramien volgt. Voor het samenstellen van dat nummer kun je dan een niet-afhankelijk formulier gebruiken met de keuzelijsten die dan de voorwaarden selecteren. En bij een klik op een knop maak je dan de nieuwe records aan.
 
Ja inderdaad als ik een voorbeeld database plaats moet die op de werkelijkheid lijken. De databse waar ik het in ga gebruiken loopt deels al 7 jaar en daar staat veel data in met naam en toe naam, dit kan ik hier niet publiceren. ik zou graag een code genereren. En de afgelopen weken ben ik hier op uit gekomen met hulp van andere op dit forum een beetje van mij en van hun.
Nu wat is werkelijk mijn vraag ik zou graag een code generen met een jaartal (PNr_jaar)-twee cijfers (PNr_ProtocolGroep),twee cijfers (PNr_Protocol)een nummer (wat voor bachcode staat)(PNr_Nummer)-en een volg nummer(PNr_volgnummer.
Hoe minder handelingen er hoeven gedaan te worden hoe beter. En ik hoef niet perse een tabel met alle losse nummers, een tabel met alleen de code is prima,
En hoe het voorstelt met een druk op de knop lijkt mij zeer goed. Maar hoe te beginnen.
alvast heel erg bedankt.
groet Allard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan