Avatar billede joggeren Nybegynder
03. januar 2005 - 13:39 Der er 20 kommentarer og
1 løsning

Definering af autonummerfelt

Jeg vil gerne have genereret et autonummerfelt, som skal følge visse regler:

Eks. første faktura i hvert år:

årxxxx

Eksempelvis

20050001

20050002

Hvordan får jeg genereret det?
03. januar 2005 - 13:42 #1
Det styres nemmest vha VBA på formular-niveau.

På en formulars BeforeInsert-hændelse kan du lægge denne kode:

Me!FakturaID= nz(DMax("fakturaID", "Din tabel", "Left(FakturaID,4) = Year(Date())"), 0)+1
Avatar billede jensen363 Forsker
03. januar 2005 - 13:43 #2
I feltegenskaber ( format ) har du mulighed for at tilføje år, eksempelvis :

"2005 "&
03. januar 2005 - 13:44 #3
Jensen, duer det så ikke kun for i år?
Avatar billede jensen363 Forsker
03. januar 2005 - 13:45 #4
Jo ... det kan der være noget om :o)
Avatar billede joggeren Nybegynder
03. januar 2005 - 13:49 #5
Skal det være et autonummerfelt den henviser til i den tabel?
03. januar 2005 - 13:55 #6
nej, du skal slet ikke bruge autonummer, da autonummer ikke kan styres. Brug bare langt heltal i stedet.


Alternativt kunne du bruge et autonummer sammen med et andet felt. Dvs et autonummer-felt samt et langt heltal-felt.

På formularens BeforeInsert kunne således lægge denne kode:
Me!fakturaID = val(cstr(Year(Date)) & Me!DitAutonummerfelt)

Men så har du altså 2 felter, hvor det ene er redundant (overflødigt) ligesom du vil opleve huller i rækkefølgen, hvis du sletter en post.
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:00 #7
Fakturaen kom til at hedde 1.. skulle hedde 20050001

Hvad er fejlen - har brugt din kode thomasjepsen

Private Sub Form_BeforeInsert(Cancel As Integer)
Me!Fakturanummer = Nz(DMax("Fakturanummer", "ordrekart", "Left(Fakturanummer,4) = Year(Date())"), 0) + 1
End Sub
03. januar 2005 - 14:02 #8
hmm...det skyldes nok, at tabellen er tom. Så finder den ikke nogle poster med 2005 i.

kigger lige på det....
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:05 #9
Det hjalp da jeg lavede den ene om til 20050001.. så var den næste rigtig.. tænker bare mere på hvad der sker til næste år..
03. januar 2005 - 14:06 #10
ja, det er netop problemet....det er nemlig også lidt problematisk, at du vil have foranstillet nuller foran 1-tallet.
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:09 #11
Ja.. men jeg kan evt. lave for 10 år frem.. eks. 20060000 20070000.. osv.. så løser det sig selv.. eller hvad?

Det ser ud til at virke..
Avatar billede jensen363 Forsker
03. januar 2005 - 14:10 #12
Er løsningen så ikke en kombination af et foematteret autonummereringsfelt og et år-felt med standardværdi Year(Date())
03. januar 2005 - 14:12 #13
Prøv denne:

  Me!Fakturanummer = Year(Date) & CStr(Format(Nz(DMax("Fakturanummer", "ordrekart", "Left(Fakturanummer, 4) = Year(Date())"), 1), "0000"))
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:16 #14
works...
03. januar 2005 - 14:16 #15
stadig lidt problemer.....øjeblik ;o)
03. januar 2005 - 14:18 #16
tak for point...men der er stadig problem....2 min...
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:19 #17
nå.ok..
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:20 #18
Ja.. det virker kun ved den første...
03. januar 2005 - 14:24 #19
jep :o(

Men denne skulle være bedre (så har jeg ikke lovet for meget ;)

Me!Fakturanummer = Year(Date) & CStr(Format(Val(Mid(Nz(DMax("Fakturanummer", "ordrekart", "Left(Fakturanummer, 4) = Year(Date())"), 0), 5)) + 1, "0000"))
Avatar billede joggeren Nybegynder
03. januar 2005 - 14:26 #20
Det var bedre.. tak..
03. januar 2005 - 14:29 #21
ja, det var lige med, at holde tungen lige i munden ;o)
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