Heeft iemand gezegd dat het onmogelijk is? Je denkwijze is verkeerd (je denkt namelijk achterstevoren), en Access heeft je probleem al jaren geleden opgelost. Namelijk zo: met de gebeurtenis <Bij niet in Lijst> (Not in list). Die gebeurtenis triggert op een keuzelijst met invoervak, waarin je de auteurs uit de tAuteurs kiest. We hebben je db niet, dus ik weet niet hoe die tabel er uit ziet, en wat je er in opslaat. Minimaal dus Voornaam en Achternaam. En dus een unieke ID die je opslaat in de boeken tabel.
Op je formulier waarin je de boeken registreert, en dus ook de auteur, heb je voor die auteurs dus een keuzelijst. Als je 20 auteurs hebt opgeslagen, zie je 20 auteurs om uit te kiezen. Stel nu dat je een boek hebt van een auteur die Remco Campert heet, en die staat nog niet in de tabel tAuteurs. Kan gebeuren, toch? Dan begin je in de keuzelijst te typen, en begin je met de ‘C’. Gelijk zie je alle namen in de keuzelijst die met een ‘C’ beginnen, dus bijvoorbeeld Carmiggelt. Je typt nu de ‘a’. Nog steeds Carmiggelt in de lijst. Dan de ‘m’: Carmiggelt verdwijnt nu. Misschien zie je een andere auteur, of je ziet al niets meer. In het laatste geval weet je: er is nog geen schrijver waarvan de eerste drie letters met ‘Cam’ beginnen. In dat geval zou ik door typen, tot je de achternaam compleet hebt (de keuzelijst blijft uiteraard leeg) en dan de keuzelijst verlaten (volgend veld klikken, op <Enter> drukken).
Nu wordt de actie <Bij niet in lijst> getriggerd, die je kunt gebruiken om de auteur automatisch toe te voegen aan de tabel. Moet je ook nog een extra Inputbox gebruiken om de voornaam te vragen, maar dat is niet zo’n probleem. Dankzij de gebeurtenis wordt de nieuwe auteur toegevoegd aan je tabel (eventueel dus met voornaam) en is gelijk beschikbaar in de keuzelijst. Probleem opgelost.
Wat je met zo’n keuzelijst bereikt, is dus dat je uit alle opgevoerde auteurs kunt kiezen, tot je er een opzoekt die nog niet is ingevoerd. En dat gebeurt dan volgens de beschreven procedure. Het opvoeren van een dubbele auteur is dus eigenlijk onmogelijk gemaakt, omdat je de auteursnaam al kiest in de keuzelijst. Neemt niet weg dat het wel degelijk mogelijk is dat je schrijvers hebt met dezelfde namen. En daar zul je tóch iets voor moeten verzinnen…