Autonummering beginnen met gewenste nummer

Status
Niet open voor verdere reacties.

musti

Gebruiker
Lid geworden
26 feb 2006
Berichten
143
hoi,

Ik wil graag dat records beginnen met de nummer 20080001. Ik heb geprobeerd om een update query uit te voeren maar tevergeefs het is niet gelukt.
 
Zo te zien zijn de eerste vier cijfers het jaartal? Als je daar nu eens een apart veld van maakt. Daar heb je erg veel profijt van als je queries gaat gebruiken op basis van het jaar 2008. Het autonummer veld moet je niet gebruiken om order nummers te genereren, maar enkel en alleen om een record uniek te maken. als je een record weggooit dan krijg je dat autonummer er "nooit meer" in. Je moet daar erg veel moeite voor doen.

Die moeite kan je beter steken in een goede oplossing. Maak een veld aan waar je dat getal in op wilt slaan. In jouw geval wordt dat een integer. Je wil een range van 1-9999 getallen. een integer is daar uitstekend voor geschikt.

Met een DMax bepaal je de hoogste waarde in de tabel. Met DMax("veldnaam","tabelnaam") + 1 bepaal je een nieuwe waarde voor het veld.

HTH:D
 
Zo te zien zijn de eerste vier cijfers het jaartal? Als je daar nu eens een apart veld van maakt. Daar heb je erg veel profijt van als je queries gaat gebruiken op basis van het jaar 2008. Het autonummer veld moet je niet gebruiken om order nummers te genereren, maar enkel en alleen om een record uniek te maken. als je een record weggooit dan krijg je dat autonummer er "nooit meer" in. Je moet daar erg veel moeite voor doen.

Die moeite kan je beter steken in een goede oplossing. Maak een veld aan waar je dat getal in op wilt slaan. In jouw geval wordt dat een integer. Je wil een range van 1-9999 getallen. een integer is daar uitstekend voor geschikt.

Met een DMax bepaal je de hoogste waarde in de tabel. Met DMax("veldnaam","tabelnaam") + 1 bepaal je een nieuwe waarde voor het veld.

HTH:D

Waar precies moet ik het code vastleggen?
 
Je code stop je in een module. De functie die je schrijft moet public zijn anders kan je hem niet gebruiken.


HTH:D
 
Je code stop je in een module. De functie die je schrijft moet public zijn anders kan je hem niet gebruiken.


HTH:D

De volgende code heb ik geschreven en ik krijg de volgende foutmelding:

code : DMax("factuurnr", "Contributie") + 1
Foutmelding: compileerfout verwacht: = en dan wordt het plusje rood
 
Verwijder alles in je Module en zet het volgende erin:

Code:
Option compare database
Option explicit

public function GetNextID() as long
    getnextid = DMax("factuurnr", "Contributie") + 1
end function

Je hebt nu een functie GetNextID die je aan kan roepen in andere VBA code, Forms en Queries.

HTH:D
 
Verwijder alles in je Module en zet het volgende erin:

Code:
Option compare database
Option explicit

public function GetNextID() as long
    getnextid = DMax("factuurnr", "Contributie") + 1
end function

Je hebt nu een functie GetNextID die je aan kan roepen in andere VBA code, Forms en Queries.

HTH:D

wanneer ik een record wil toevoegen dan wordt het niet automatisch met 1 verhoogt.
Ik heb een nieuwe module gemaakt en jouw gegeven code erin toegevoegd.
 
Code:
insert into contributie (factuurnr) values (getnextid())
je query moet er ongeveer zo uitzien.
 
Code:
insert into contributie (factuurnr) values (getnextid())
je query moet er ongeveer zo uitzien.

moet ik het sql code in visual basic schrijven of een aparte query maken.
en als ik een query heb gemaakt wanneer moet hij het dan uitvoeren.

wanneer ik het formulier open(zie bijlage) dan moet het automatisch ingevuld worden.
 

Bijlagen

  • naamloos.JPG
    naamloos.JPG
    91,3 KB · Weergaven: 56
in het OnOpen event van je form kan je de volgende code opnemen
Code:
Private Sub Form_Open(Cancel As Integer)
    CurrentDb.Execute ("insert into contributie (factuurnr) values (" & getnextid() & ")")
End Sub

Share and Enjoy!
 
in het OnOpen event van je form kan je de volgende code opnemen
Code:
Private Sub Form_Open(Cancel As Integer)
    CurrentDb.Execute ("insert into contributie (factuurnr) values (" & getnextid() & ")")
End Sub

Share and Enjoy!

het is mij niet gelukt. Ik ben ook een beginner. zal ik de database naar jou dan opsturen
 
als je hem compact en zipt dan kan je hem hier posten.
Zorg wel dat er geen gevoelige informatie instaat.

HTH:D
 
als je hem compact en zipt dan kan je hem hier posten.
Zorg wel dat er geen gevoelige informatie instaat.

HTH:D

dat lukt niet is groter dan 100 kb, heb je misschien een email waar ik het naar toe kan verzenden.
 
Waarom moeilijk doen als het erg makkelijk kan.

Ik heb het even uitgeprobeerd maar het kan gewoon alsvolgt:

ls bij de eigenschappen van het veld "factuurnr" in de optie standaardwaarde (tabblad gegevens) opneemt
Code:
=dmax("factuurnr","contributie")+1
zal iedere keer dat er nieuw record wordt opgeslagen het nummer met 1 worden verhoogt.

Werkt prima zonder VBA.

Groet
Wim
 
Waarom moeilijk doen als het erg makkelijk kan.

Ik heb het even uitgeprobeerd maar het kan gewoon alsvolgt:

ls bij de eigenschappen van het veld "factuurnr" in de optie standaardwaarde (tabblad gegevens) opneemt
Code:
=dmax("factuurnr","contributie")+1
zal iedere keer dat er nieuw record wordt opgeslagen het nummer met 1 worden verhoogt.

Werkt prima zonder VBA.

Groet
Wim


heel erg bedankt,

maar nou het volgende

ten eerste ik wil 00010 daarna 00011,00012 , omdat het een intertje is verwijdert het de nullen vooraan. hoe moet ik dat voor elkaar krijgen
 
Ligt er aan of je het alleen met deze voorloppnullen wilt tonen (wat volgens mij genoeg is)
Je kan dan in de notatie van de rubriek (Opmaak) gewoon '00000' (vijf nullen) neerzetten. dan word de rubriek alrijd met voorloopnullen getoond.

Als je e.e.a. wilt afdrukken dan kan je de zelfd truk gebruiken.

Je kan ook met ieder nummer beginnen door in het eerste record de startwaarde weer te geven.

Ook kan je met deze zelfde standaard waarde het jaar in de rubriek zetten.
=JAAR(Nu())


Succes.
 
Waarom moeilijk doen als het erg makkelijk kan.

Ik heb het even uitgeprobeerd maar het kan gewoon alsvolgt:

ls bij de eigenschappen van het veld "factuurnr" in de optie standaardwaarde (tabblad gegevens) opneemt
Code:
=dmax("factuurnr","contributie")+1
zal iedere keer dat er nieuw record wordt opgeslagen het nummer met 1 worden verhoogt.

Werkt prima zonder VBA.

Groet
Wim

sorry dat ik zo laaaat reageer.

Ik heb de volgende code ingevuld.

=DMax([Contributie]![Factuurnr2009];[Contributie])+1

maar hij geeft de volgende foutmelding:

Kan de volgende veld Contributie!factuur niet vinden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan