Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Access] AutoNumbering

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste dames en heren,

Om meteen maar even duidelijk te zijn, dit is niet een standaard AutoNumbering vraag voor in Acces, want die ik mij opzich wel duidelijk.

Mijn probleem is iets anders. Ik wil namelijk een autonumbering doen aan de hand van hoeveel datarecords een bepaalde value hebben. En ik wil deze aan de hand van 2 values uit mijn database doen.

Om een voorbeeld te schetsen.

Er zijn 10 datarecords: Met de volgende data.

Naam- - Haar - Ogen
Susan - Blond - Blauw
Kim - Brunette - Bruin
Sanne - Blond - Blauw
Amy - Rood - Bruin
Evelien - Zwart - Bruin
Marleen - Blond - Groen
Denise - Brunette - Blauw
Yvonne - Brunette - Bruin
Joyce - Zwart - Bruin
Amalia - Blond - Blauw

Wat ik wil is dat er een automatische code wordt toegevoegd aan de records (in de 4e kolom).

Susan wordt Blond.Blauw.001 (<-- de eerste dame met blond haar en blauwe ogen)
Kim wordt Brunette.Bruin.001 (<-- de eerste dame met bruin haar en bruine ogen)
Sanne wordt Blond.Blauw.002 (<-- de tweede dame met blond haar en blauwe ogen)
Amy wordt Rood.Bruin.001
Evelien wordt Zwart.Bruin.001
Marleen wordt Blond.Groen.001
Denise wordt Brunette.Blauw.001
Yvonne wordt Brunette.Bruin.002
Joyce wordt Zwart.Bruin.002
Amalia wordt Blond.Blauw.003

Het gaat er dus om dat hij automatische weet hoeveel er al met dezelfde eigenschappen zijn en dan automatisch het volgende nummer geeft.

Is dit mogelijk in Access of met een SQL code?

Alvast enorm bedankt!

Kus,
GBJ

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je zou een trigger kunnen aanmaken die bij elke insert op die tabel draait. Vervolgens zet je in die trigger een query waarin je het veld zet op de waarde van een COUNT(...) + 1 WHERE beide velden zijn gelijk aan wat je net geïnsert hebt. Maar heel erg handig is dat niet, want dan krijg je dat als je nummers 1, 2 en 3 hebt en dan nummer 2 verwijdert dat je volgende nummer ineens weer 3 is en dat getal er dus twee keer in staat. Je zou in plaats van COUNT juist MAX kunnen gebruiken, maar dan heb je nog steeds een probleem als je 1, 2 en 3 hebt en nummer 3 verwijdert. De vierde insert krijgt dan weer het nummer 3 terwijl je dat bij autonummering juist niet wil hebben.

Waarom heb je dit eigenlijk nodig? Het is op zijn zachtst gezegd een beetje raar. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 19-11 16:46

Acid_Burn

uhuh

Als je wilt weten hoeveel er van een bepaalde combinatie van eigenschappen zijn, dan zou ik gewoon een query gebruiken met een 'group by' en een 'count'.

Als je het gaat doen zoals jij dat voorsteld dan kom je in de problemen als je een record verwijderd of wijzigt.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
Of gaan bijhouden in de database (in een andere tabel )wat die counters (moeten) zijn....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Het voorbeeld van de vrouwen was slechts bedoeld om een makkelijk voorbeeld te geven.
De query die ik ga gebruiken is bedoeld om een lijst met producten een overzichtelijke code te geven zodat meteen duidelijk is aan de code wat hun functie/doel is.

Maar hoe zou de query die group by en count doet dan automatisch een nummering aan ze geven? Dat is mij nog niet helemaal duidelijk (Geen echte MS Acces pro jammer genoeg).

Bedankt voor de reacties trouwens alvast!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Codes zijn er voor machines, niet voor mensen. Ik zou vooral geen moeite doen om mooie nummertjes te maken als dat betekent dat je door allerlei hoepels moet springen.

Als je het dan toch per se wil dan is de oplossing van farlane de enige houdbare. Aparte tabel maken en daarin bijhouden wat het laatst uitgegeven nummer per combinatie is en steeds bij het invoeren van een nieuw record dat getal ophogen. Maar dan moet je wel goed nadenken over row locks, je wil niet dat het ene proces het nummer uitleest, daarna het volgende proces ook datzelfde nummer uitleest en je vervolgens in twee losse processen beslist dat het nieuwe nummer 4 moet zijn waardoor je met twee rijen zit die hetzelfde nummer krijgen...

IMO kun je dit beter gewoon uit je hoofd zetten.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat probeer je nu precies te bereiken?

Want mooie nummertjes die iets zinvols vertellen uitgeven is opzich niet moeilijk.
Maak gewoon een tabel aan met zinvolle informatie en hang daar een standaard auto-increment op.
Dan kan je productentabel daar weer naartoe joinen en op die manier krijg je een nummertje.
Gewoon standaard normaliseren...

Echter dan krijg je dus iets in de richting van dat Blond - Blauw code 001 is en Brunette - Bruin is 002.
Desnoods kan je er nog een verdieping in aanbrengen dat je ook weer een aparte tabel gaat maken voor blond / brunette en voor blauw / bruin zodat je codes krijgt in de trant van 001.001 en 002.002.

Dat is allemaal simpel en basic te doen. En je weet dan dat iedereen met 001 beginnend blond is, iedereen met 002 ogen heeft bruine ogen.

Echter is dat niet wat je beschrijft in je voorbeeld, daar heb je een redelijk arbitraire voorwaarde eraan toegevoegd (namelijk in welke volgorde ze zijn opgevoerd)
Pagina: 1