Ga naar inhoud

(microsoft access 2000) handmatig autonummering instellen


Aanbevolen berichten

Hoi, Ik ben bezig met een database en daarin is er artikelcode. Deze code begint voor het ene soort artikel met een H en voor de andere met een A, daarna kan er gewoon doorgenummerd worden voor elke nieuwe toegevoegde code. (dus H1, H2, H3 enz)(en ook A1,A2,A3) (NIET (H1,A2,A3,H4 (de H en A moeten los nummeren)) Weet iemand hoe ik dan voor het achterste stuk (dus na de H of A) een automatische doornummering kan maken. Alvast bedankt
Link naar reactie
Ik gebruik daar een speciaal tabelletje voor met slechts 1 record. Daar houd ik dat soort 'variabelen' in vast. In jouw geval velden voor ieder autonummer. Iedere keer dat je een autonummer daarvoor nodig hebt, lees je het desbetreffende nummer uit de tabel, verhoog het met 1 en plak het achter je code (H, A etc). Daarna niet vergeten het opgehoogde nummer weer op te slaan in de tabel. VBA code wel nodig.
Link naar reactie
Je maakt een speciale tabel met autonummers. [code:1:1c4ef3f2f4]tabel: autonummers veld1: H-teller veld2: A-teller[/code:1:1c4ef3f2f4]Je zet de tellers eenmalig op 1. Iedere keer als je nu een nieuw A-artikel aanmaakt, gebruik je een stukje VBA kode dat de A-teller uitleest uit de tabel autonummers en vervolgens achter de A plakt. Daarna verhoogt de code het nummer met 1 en slaat het weer op in de tabel autonummers. Op deze manier staat in de tabel autonummers altijd het eerst beschikbare autonummer voor een A-artikel. Hetzelfde doe je voor de H-artikelen (en andere die je hebt). Ik ben geen Access guru, maar dit is de benadering die ik gebruik.
Link naar reactie
[i:a7787f0a08]Met de functie DCount bepaalt u het aantal records in een bepaalde recordset (een domein (domein: een set records die wordt gedefinieerd via een tabel, een query of een SQL-expressie. Statistische domeinfuncties geven als resultaat informatie over een specifiek domein of een set records.)). U kunt de functie DCount gebruiken in Visual Basic, in een macro (macro: een actie of een reeks acties waarmee u taken automatisch kunt laten uitvoeren. Macro's kunt u opnemen in de programmeertaal Visual Basic for Applications.), in een queryexpressie of in een berekend besturingselement (berekend besturingselement: een besturingselement in een formulier, rapport of Data Access-pagina waarin het resultaat van een expressie wordt weergegeven. Als een waarde in de expressie wordt gewijzigd, wordt het resultaat opnieuw berekend.). U kunt de functie DCount bijvoorbeeld opnemen in een module om het aantal op te vragen van de records in de tabel Orders die overeenkomen met orders die op een bepaalde datum zijn geplaatst.[/i:a7787f0a08] Nog erger dus. Niet gebruiken, want het gaat goed mis. :lol:
Link naar reactie
Wat jij zegt Wim daar had ik nog niet aan gedacht, dus bedankt want anders had ik een grove fout gemaakt. Wat Wiep heeft geschreven vind ik niet echt een logisch antwoord en ik begrijp niet hoe die conclusie uit dat stukje tekst erboven komt, maar goed. Kan iemand mij dan aub vertellen hoe ik die VBA code gebruik want daar ben ik niet echt thuis in (het gaat hier namelijk om een waarde die ik bij een formulier als standaardwaarde moet opgeven en die mag niet uit een andere tabel gehaald worden volgens mij)
Link naar reactie
[i:3bde40caa4]Wat Wiep heeft geschreven vind ik niet echt een logisch antwoord en ik begrijp niet hoe die conclusie uit dat stukje tekst erboven komt, maar goed[/i:3bde40caa4] Niet? Nou, een recordset is wat anders dan een tabel. Een recordset bevat meestal nog minder records dan een tabel. Kortom, de kans op dubbele waardes is nog groter. Dat bedoelde ik er mee.
Link naar reactie
De beste oplossing is gewoon het gebruik van een trigger in je database maar dat is niet bij alle databases mogelijk. (Eigenlijk alleen mogelijk bij "echte" SQL databases.) Als alternatief kun je ook een Auto-Increase veld gebruiken maar ja, H1, A2, A3, H4 wil je dus niet dus werkt dat niet. Eigenlijk zou je het veld in tweeen moeten delen, te weten een code en een nummer. Je nieuwe nummer wordt dan: select Max(Nummer) + 1 from tabel where Code = 'H' En het resultaat hiervan insert je dus in je nieuwe record. Maar ja, dan moet je sleutelveld wel uniek zijn over twee velden, en niet 1. Maar gelukkig kun je via SQL beide velden wel weer netjes combineren tot 1 veld.
Link naar reactie
Dat kan met een recordset. Open de recordset met een query die je het juiste record teruggeeft en gebruik de waardes in de recordset. Voorbeeldje: [code:1:190bf53f9d] dim variabele as variant dim cnn as ADODB.connection dim rst as new ADODB.recordset set cnn=currentproject.connection rst.open <querynaam>, cnn, acOpenStatic rst.movefirst Variabele = rst.fields(0).value rst.close cnn.close set rst = nothing set cnn = nothing [/code:1:190bf53f9d]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...