Print side | Luk vindue

Generere unik id v. hjælp af tesktstreng

Udskrevet fra: Dansk Access Forum
Kategori: Hjælp til Access
Forum navn: Formularer (Forms)
Forum beskrivelse: Spørgsmål vedr. formularer og alt hvad der vedrører disse
Web-adresse: https://www.accessforum.dk/forum_posts.asp?TID=45
Udskrevet den: 21-11-2024 kl. 20:29


Emne: Generere unik id v. hjælp af tesktstreng
Besked fra: Simsalabim
Emne: Generere unik id v. hjælp af tesktstreng
Posteringsdato: 04-09-2014 kl. 20:25
Kære alle

Jeg er ny bruger her og beskæftigede mig for ca. 20 år siden en del med access vers. 2.0 Big smile. Desværre har jeg ikke rigtig holdt min viden opdateret, da jeg fik anden beskæftigelse og derfor ikke havde brug for at arbejde med databaser.

Nu står jeg imidlertid med en opgave, hvor jeg skal bruge en databaseløsning og er selvfølgelig straks løbet ind i en masse problemer idet MS selvfølgelig også har forandret Access til noget næsten ukendeligt, ligesom de har gjort med stort set alle de øvrige programmer. Så jeg kan desværre ikke rigtig bruge ret meget af min tidligere erhvervede viden til noget udover selve forståelsen af opbygningen af databaser.

Jeg skal genere en unik værdi til en post i forbindelse med at den indtastes, ved at sammenlægge flere felter. Jeg har oprettet en autonummerering, som skal sammenlægges med 2 andre felter "Selskab" og Afdeling" for at skabe en unik værdi i feltet "Uniknøgle"der er nem identificerbar.

Felterne "Selskab" og afdeling er tekstfelter og autonummer er tal. Det færdige resultat skulle gerne se ud om dette: 01-78-245 (selskab-afdeling-autonummer). værdien skal automatisk lægges over i feltet "uniknøgle" når feltet Afdeling opdateres (hændelsen "efter opdatering").

Jeg mener at have styr på tekststrenge fra excel, men jeg kan knagme ikke huske, hvordan jeg får selve hændelsen til at foregå, håber der er nogen der kan hjælpe mig.

På forhånd tak
allan s



Svar:
Besked fra: Simsalabim
Posteringsdato: 04-09-2014 kl. 20:35
PS. jeg bruger Access 2007

allan s


Besked fra: hkh
Posteringsdato: 04-09-2014 kl. 22:19
Citat: Simsalabim Simsalabim skrev:


Felterne "Selskab" og afdeling er tekstfelter og autonummer er tal. Det færdige resultat skulle gerne se ud om dette: 01-78-245 (selskab-afdeling-autonummer). værdien skal automatisk lægges over i feltet "uniknøgle" når feltet Afdeling opdateres (hændelsen "efter opdatering").

Jeg ved ikke om jeg har forstået dig korrekt, men hvis det drejer sig om at få samlet felterne i et nyt felt med den viste formatering, kunne det gøres sådan.

Function Opret_Unik_Key()
if nz(me!selskab)<> "" then
   msgbox "Selskab er ikke oplyst!"
   me!selskab.setfocus
   exit sub
end if

if nz(me!Afdeling)<> "" then
   msgbox "afdelinger ikke oplyst!"
   me!afdeling.setfocus
   exit function
end if

me!uniknøgle=right("00" & me!selskab,2) & "-" & right("00" & me!afdeling,2) & "-" & right("000" & me!autonummer,3)
end function


Først kontrolleres om selskab eller afdeling er indtastet. Hvis ikke afbrydes og focus flyttes til feltet.

uniknøgle er feltet der skal indeholde resultatet.
right("00" & selskab,2) sikrer, at der bliver foranstillet nul i selskabsnummeret, hvis det er nødvendigt.
right("00" & afdeling,2) sikrer, at der bliver foranstillet nul i afdelingsnummeret, hvis det er nødvendigt.
right("000" & autonummer,3) sikrer, at der bliver foranstillet nuller i autonummeret, hvis det er nødvendigt.

Koden kan oprettes i en function eller sub rutine
hvis der benyttes en function kan følgende benyttes i felterne selskab og afdelings efter opdatering.
=Function Opret_Unik_Key()

funktionen skal ligge i formularens kode, ellers skal formularens henvisning med i stedet for me!

Som udgangspunkt, syntes jeg det er en dårlig ide, ikke at bruge autonummer som nøglefelt, men for at gøre feltet tydeligere for brugerne kan det fungere.
I tabellen bag bør uniknøgle være indekseret og unikt, i feltets uniknøgle før opdatering kan evt. oprettes en fejlkontrol.

-------------
Hans



Print side | Luk vindue