Toon posts:

[Access] Autonummering en VBA

Pagina: 1
Acties:
  • 132 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een formulier waarop je een bestelling kunt maken. De gebruiker voert een artikelnummer in in een textboxje, ramt op enter, klaar.
De achterliggende VBA code zoekt bij het artikelnummer in de database op welke leverancier, omschrijving, etc en schrijft dat weg in de tabel TBL_Bestellingen-data.
In een andere tabel, TBL_Bestellingen, staat een uniek ordernummer, datum, etc. De daadwerkelijke artikelen en beschrijving staan dus in TBL_Bestellingen-data.
Een query in een subformulier toont dan de al ingevoerde artikelen op het scherm.

Nou komt het. Als er een nieuw record wordt aangemaakt ( met dit knopje: >* ) wordt er d.m.v autonummering een ordernummer verzonnen. Dit nummer heeft de VBA code nodig om in TBL_Artikelen-data aan te geven bij welk ordernummer een bepaald besteld artikel hoort. Echter, als in het nieuwe record nog geen nummer heeft is dit dus niet mogelijk en loopt de handel vast (Ongeldig gebruik van Null ofzoiets). Logisch.

Dus: hoe ontdek ik nou welk nummer Access gaat toewijzen aan de nieuwe record?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Je kunt, na de insert van een nieuw record het nummer gaan ophalen door de volgende query te doen:

code:
1
select @@identity from tabel


Je kunt dus niet op voorhand gaan weten welk nummer de PK gaat krijgen.

[ Voor 21% gewijzigd door whoami op 20-03-2003 11:36 ]

https://fgheysels.github.io/


  • Boss
  • Registratie: September 1999
  • Laatst online: 00:09

Boss

+1 Overgewaardeerd

of je slaat het record meteen op, ervanuit gaande dat je hem toch wilt bewaren.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • elmer25
  • Registratie: Februari 2002
  • Laatst online: 01-12-2021

elmer25

ooit was ik 25

whoami schreef op 20 March 2003 @ 11:35:
Je kunt, na de insert van een nieuw record het nummer gaan ophalen door de volgende query te doen:

code:
1
select @@identity from tabel


Je kunt dus niet op voorhand gaan weten welk nummer de PK gaat krijgen.
dit geeft de ID van het laatst geINSERTe record terug. wanneer er meerdere gebruikers van je systeem gebruik maken is dit volgens mij niet een waterdichte manier. helaas weet ik ook geen betere manier ;(

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Hmm... Je moet geen access gebruiken als je meerdere concurrente gebruikers hebt.

https://fgheysels.github.io/


  • edm
  • Registratie: December 2000
  • Laatst online: 13-10-2024

edm

Volgens mij is het wel waterdicht met meerdere gebruikers, want het geeft het laatst geinserte id over een bepaalde connectie terug. Zie voor meer info op:
http://www.sqlteam.com/item.asp?ItemID=319

Dus volgens mij moet je alleen goed opletten dat je vba code dezelfde connectie gebruikt als access!
Pagina: 1