Vraag & Antwoord

Programmeren

(microsoft access 2000) handmatig autonummering instellen

16 antwoorden
  • 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
  • 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.
  • sorry, maar ik snap niet helemaal precies wat je bedoelt, zou je het iets meer schematisch kunnen uitleggen??
  • 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.
  • ok, maar het is niet meer nodig ik ben er vanochtend zelf achter gekomen dat ik het met "Dcount(expr;domein;voorwaarde)" kan doen. in ieder geval bedankt
  • Volgens mij gaat dat fout. Dcount telt het aantal records. Als je na het toevoegen van bv 10 records bv de eerste verwijdert en er eentje toevoegt hebben de laatste twee hetzelfde nummer (beiden H10 of H11 voor H-artikelen). Of zie ik dat fout.
  • [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:
  • 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)
  • Dit zijn sowieso allemaal ranzige oplossingen. En alleen toepasbaar als je in je eentje exclusief op de database werkt. Het gaat vroeg of laat toch een keer mis. :) Voor MS Access is er geen goede oplossing.
  • tja, das misschien waar, maar kan iemand me dan tenminste vertellen hoe ik met VBA-code de inhoud van een bepaald record in een tabel ophaal??
  • [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.
  • 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.
  • dat laatste dat lukt niet meer want dat is teveel werk en dan haal ik mijn deadline niet, maar als iemand mij kan vertellen hoe ik met VBA code een waarde uit een record van een andere tabel ophaal dan ben ik al geholpen!!!
  • 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]
  • ok, bedankt Het is gelukt, weliswaar niet met die recordset, maar de oplossing die ik nu heb is een manier die ik bedacht dankzij workshop alex, dus bedankt.
  • HOI! Schouderklopje voor mezelf... Klop. :P

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.