Invullen tabel

Status
Niet open voor verdere reacties.

Shuaib620

Gebruiker
Lid geworden
23 sep 2009
Berichten
14
Hallo iedereen,

Ik heb een vraag over automatische invullen van gegevens. Er hebben vele al deze vraag gesteld maar het is mij niet duidelijke geworden.

Ik heb een tabel inkoop en artikelen. Bij inkoop wil ik een artikel selecteren waardoor de prijs automatisch zich invult. Ik heb relaties gemaakt maar zonder succes.

Ik combineer bijna alles. Ook bij het verkoop tabel wil ik bijvoorbeeld in het keuzelijst een klant kiezen en dat de rest zichzelf invult. Ik heb wel begrepen dat het met formulier gebeurt maar hoe?
Iedereen post de voorbeeld maar geen uitleg:(

Bijvoorbaat dank,
 
We hopen eigenlijk dat de voorbeelden voor zichzelf spreken ;) Overigens word het meestal ook nog wel uitgelegd ook. Ik probeer dat althans meestal wel.... Omdat je de voorbeelden blijkbaar al hebt, en zelf geen db hebt meepgepost, zal ik geen voorbeeldje meegeven, maar het principe kort proberen uit te leggen.
Om te beginnen: de koppelen tussen je relaties hebben niks te maken met het al dan niet automatisch invullen van gegevens op formulieren of in tabellen. In het Relaties venster leg je alleen de controles vast op de gegevens die je in tabellen mag invoeren. Zo is het praktisch gezien niet mogelijk om artikelen te verkopen die je niet hebt. Je zult zo'n artikel nooit uit het magazijn kunnen pakken, want het bestaat niet. Alleen weet een database dat uiteraard niet; als je niks regelt, kun je in de tabel Inkoop probleemloos artikelen registreren die niet bestaan. En dat wil je uiteraard niet. Dus leg je in het Relaties venster een koppeling tussen [Artikelnummer] in de tabel [Artikelen], en [Artikelnummer] in de tabel [Inkoop]. Die koppeling zegt feitelijk: je mag in de tabel [Inkoop] geen artikelnummers opslaan van artikelen waarvan je geen artikelnummer hebt in de tabel [Artikelen]. We noemen dat: Referentiële Integriteit afdwingen.

Dit principe werkt alleen als je in de tabel [Artikelen] van het veld [Artikelnummer] een sleutelveld hebt gemaakt. Want: hoe weet de database welk artikelnummer je bedoelt in de tabel [Inkoop], als je twee of meer artikelen hebt in de tabel [Artikelen] als de artikelen hetzelfde nummer hebben? Deze constatering brengt ons automatisch tot de conclusie dat je alleen maar kunt zeggen welk artikelnummer in de tabel [Inkoop] hoort bij het juiste artikelnummer in de tabel [Artikelen], als dat artikelnummer in [Artikelen] uniek is. In de tabel Inkoop is het uiteraard de bedoeling dat je een artikel uit [Artikelen] meer dan één keer mag bestellen. In de tabel [Inkoop] is het veld [Artikelnummer] dus nooit een sleutelveld.

Nu weer terug naar de vraag: hoe krijg je op het formulier Inkoop de klantgegevens te zien als je een klant kiest? En hoe de artikelgegevens als je een artikel kiest? Het antwoord daarop is: met tekstvakken die zijn gekoppeld aan de keuzelijsten. Als voorbeeld de keuzelijst Artikelen. (ik noem hem voor het gemak cboArtikelen). Deze keuzelijst gebruik je om een artikel te kiezen. Artikelen staan in de tabel [Artikelen] dus deze tabel gebruik je als basis voor de keuzelijst. In de tabel [Inkoop] sla je het artikelnummer op, dus dat nummer heb je in ieder geval nodig in de keuzelijst Verder is het handig als je kunt kiezen op naam, en je wilt ook nog de prijs zien van het artikel, en de verpakkingseenheid. Al deze gegevens staan in de tabel [Artikelen]. De keuzelijst stel je zodanig in, dat de eerste kolom wordt verborgen (doet Access automatisch als je de wizard gebruikt). Je ziet dus, als je de keuzelijst gebruikt, de Artikelnamen in de keuzelijst terug. Maar je slaat (heel belangrijk om te onthouden) de Artikelnummers op in de tabel!
Om de extra artikelgegevens te zien op het formulier, maar je extra tekstvakken. Deze koppel je niet aan een tabel of query, maar aan de keuzelijst. Immers: als je een artikel kiest, wil je de bijbehorende gegevens zien. Gelukkig kan dat heel simpel; je kunt namelijk verwijzen naar de verschillende kolommen uit de keuzelijst. Dat doe je door het Besturingselementbron van de tekstvakken te laten verwijzen naar de betreffende kolom uit de keuzelijst. In mijn voorbeeld staat het Artikelnummer in de eerste kolom, artikelnaam in de tweede, prijs in kolom 3 en verpakkingseenheid in kolom 4. Om nu de prijs in een tekstvak te laten zien, zet je in het tekstvak bij de eigenschap <Besturingselementbron> de volgende fomule: =[cboArtikelen].Column(2). Je zult nu zien, dat als je een artikel selecteert, de prijs netjes wordt getoond op het formulier. Vervolgens kun je hier weer, in combinatie met het veld [Aantal], berekeningen mee maken.

Moet het nog specifieker, dan hebben we toch echt je eigen db nodig ;)
 
Heel erg bedankt voor je (uitgebreide:d) uitleg. Ik heb bijna alles al begrepen. Het gedeelte van kolom verwijzen begrijp ik wel hoe het ligt maar niet wat ik moet intypen. Ik denk dat het ook komt met een beetje meer verstand van acces. Dus iemand als jij zou het zo kunnen intypen.

Ik post de database erbij. Zodra je de tabel van inkoop ziet begrijp je wel wat ik wil. Als ik artikel kies horen de bijbehorende velden zichzelf in te vullen en de rest van de velden wil ik handmatig invullen. Het hoeft precies zo te zijn. Als jij bijvoorbeeld een andere oplossing hebt zoals een formulier zou dat nog mooier zijn.

Ik wil eigenlijk nog tabel erbij maken voor verkoop. Bovenaan wil ik de klant kiezen en de rest van de formulier moet vanzelf worden en onderaan de formulier wil ik een tabel zeten die automatisch alle verkoop van de klant laat zien. Daar heb ik de grootste gedeelte al van geleerd.

Waar zou ik zijn zonder helpmij: Achter mijn computer met mijn handen op mijn hoofd:eek:

Alvast bedankt,
 

Bijlagen

  • kris.rar
    29,7 KB · Weergaven: 31
Eerst maar eens terug naar de basis, want je hebt een aantal zaken nog niet helemaal goed begrepen. Om te beginnen: de technieken die ik heb uitgelegd, kun je toepassen op Formulieren, niet op tabellen. Bovendien is het niet de bedoeling dat je allerlei gegevens gaat opslaan in Inkopen die je niet op hoeft te slaan, omdat die gegevens al in andere tabellen staan. Zoals Artikel en ArtikelID. In de tabel Inkoop hoef je alleen het ArtikelID op te slaan. De artikelnaam kun je namelijk opzoeken in de tabel Artikelen. Iets vergelijkbaars geldt voor Leverancier. Je slaat niet de naam van de leverancier op, maar LeverancierID. Omdat je dat niet goed had gemaakt, kon je de tabellen ook niet goed aan elkaar koppelen.
Ook al is het mogelijk om in tabellen opzoeklijsten te maken en te gebruiken, raad ik je dat toch af. De simpele reden is ook weer dat je keuzelijsten bij voorkeur op Formulieren gebruikt, en je in de tabellen de opgeslagen waarden wilt kunnen zien. Als je gegevens moet bijwerken in een tabel, of andere queries gaat maken, moet je ook de echte waarden gebruiken. Het is ook helemaal niet de bedoeling dat een gebruiker in een tabel gaat kijken. Waarom zou je die dan verfraaien? Je legt tenslotte ook geen tapijt in de kruipruimte van een huis, terwijl het fundament toch één van de belangrijkste onderdelen van een huis is.... De reden dat je dat niet doet is simpel: ook al heb je een stevig fundament, je komt er nooit! En zo is het ook met tabellen. Je doet alle invoer straks via formulieren, dus in de tabellen komt een gebruiker niet. Hou die dan ook sec voor de gegevens...

Ik zou zeggen: maak eerst de tabellen die je nodig denkt te hebben, en dan de formulieren. Op die formulieren ga je dan de keuzelijsten maken. En je zult zien, dat mijn tips daar prima werken!
En hou ook de cursus voor beginners in de gaten; daar staan ook nuttige tips in!
 
Dankjewel voor je mooie uitleg. Ik ben inderdaad bezig met een acces cursus. Er waren plekken waar ik niet uitkwam vandaar. Nu is het me wel duidelijk. Ik hoop maar niet dat je Iets hebt uitgelegd in de bijlage want ik heb geen "recht" om het te downloaden.

In elke geval bedankt :)
 
Ik hoop maar niet dat je Iets hebt uitgelegd in de bijlage want ik heb geen "recht" om het te downloaden.

Hoe bedoel je dat precies? Iedereen die zich heeft geregistreerd, moet volgens mij kunnen downloaden en jij hebt je geregistreerd.
 
Het is al opgelost maar ik krijg het wel eens dat ik inlog en dat ik op het bestand klik en dat er nieuwe venster opent waarbij ik nog een keer moet inloggeen om het bestand te downloaden maar weer op dezelfde venster terecht kom met dezelfde probleem.

Ik kan het nu wel downloaden. In elk geval bedankt voor het zo snel reageren :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan