Avatar billede hw Nybegynder
26. januar 2004 - 10:15 Der er 8 kommentarer og
1 løsning

Unikt medlemsnummer

Roder med en medlemsdatabase hvori der er 3 tabeller hhv. Medlemsnummer, Stamdata, Postnummer.

Relationen mellem Medlemsnummer og stamdata er 1 til mange

Endvidere har jeg en formular der lister data udfra en forespørgsel.

På denne formular har jeg en knap opret ny post ..og denne virker fint, men jeg ville gerne have at på den nye post indsættes der næste ledige Medlemsnummer automatisk.

Altå hvis der er 100 medlemmer så bliver næste unikke nummer 101, og hvis et medlem slettes fx. Medlemsnr. 68 så "frigives" dette til næste nye medlem.
Avatar billede weaponx Nybegynder
26. januar 2004 - 10:24 #1
Åbn tabellen i designvisning. Vælg autonummerering under felttype i det felt du ønsker, så tildeler den selv et nummer hver gang en ny post oprettes.
Avatar billede trer Nybegynder
26. januar 2004 - 10:24 #2
Du må opbygge en funktion der løber din medlemsliste gennem, og finder et ubrugt nummer eller udvider nummerlisten. 

Men det pæneste, rent database mæssigt, er aldrig at genbruge et unikt nummer. Det gør administrationen nemmere og fjerner risikoen for krydse noget information om et gammelt medlem med et nyt (og jo større databasen bliver, jo flere informationer du gemmer - jo større bliver risikoen for det).

Bare som eks.
Du sender et girokort med en rykker for manglende betaling til medlem 17.
Medlem 17 melder sig efterfølgende ud.
Du sletter medlem 17 trods hans gæld.
Nyt medlem melder sig ind, og han får nr 17.
Du sender girokort til det nye medlem 17
Det gamle medlem 17 får en anfald af dårlig samvittighed og betaler sit girokort.
Det nye medlem 17 betaler sit girokort.
Du har nu to betalinger fra medlem 17, hvad gør du?
Avatar billede trer Nybegynder
26. januar 2004 - 10:25 #3
Heh... og WeaponX har lige givet svaret på hvordan du laver et nyt unikt nummer til hvert medlem :-)
Avatar billede mugs Novice
26. januar 2004 - 10:55 #4
Indsæt denne i formularens VedAktuel hændelse:

Private Sub Form_Current()
If Me.NewRecord Then
Me.FELTNAVN = DMax("[FELTNAVN]", "TABELNAVN") + 1
End If
End Sub

Hvor FELTNAVN er feltet i både tabellen og formularen.
Enig med trer i bemærkninger vedr. et unikt nr der ikke genbruges.
Avatar billede hw Nybegynder
26. januar 2004 - 11:23 #5
det må vel være mugs der skal have point...selvom jeg også kunne bruge i andres betragtninger ;0)
26. januar 2004 - 12:53 #6
En lille forbedrng af Mugs' forslag: I stedet for at indsætte værdien i feltet, så angiv blot standard-værdien. Derved slipper man for at Access automatisk begynder at oprette en ny post, bare fordi man står på den sidste post i formularen.
If Me.NewRecord Then
  Me.FELTNAVN.defaultvalue = DMax("[FELTNAVN]", "TABELNAVN") + 1
End If
Avatar billede mugs Novice
26. januar 2004 - 14:19 #7
Hej Thomas > Det havde jeg ikke tænkt over, men hvorfor skulle Access oprette en ny post når den står på sidste post i formularen. Så er betingelsen NewRecord jo ikke opfyldt.
26. januar 2004 - 14:49 #8
Mugs->Jeg skulle egentlig også have skrevet: "...Access automatisk begynder at oprette en ny post, bare fordi man står på en ny post".
For det der sker, er at lige så snart du stiller dig på en tom post, så indsætter du en værdi i FELTNAVN, hvorved posten er under oprettelse. Hvis feltet er primærnøgle (eller hvis der er en anden primærnøgle af autonummer-type) så vil posten blive gemt hvis brugeren skifter post eller hvis formularen lukkes.
Alt dette undgås ved kun at sætte defaulvalue.

Men du fik de 100 point alligevel :o)
Avatar billede weaponx Nybegynder
26. januar 2004 - 17:05 #9
Enig i at mugs skal have point ;/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester