Automatisch aanvullen record

Status
Niet open voor verdere reacties.

AoKuang1977

Nieuwe gebruiker
Lid geworden
1 sep 2021
Berichten
4
Goedendag,

Ik heb een vraag m.b.t. Access.

Ik heb een database met meerdere tabellen voor intern voorraadbeheer. Één tabel is de inkomende voorraad/levering met verschillende records en een andere is een tabel waarin de artikelen en prijzen staan.
Nu wil ik dat, wanneer ik in de eerstgenoemde tabel een artikel toevoeg, de prijs er automatisch bij komt te staan. Ben al even aan het zoeken en puzzelen geweest, maar ben de goede oplossing niet tegengekomen.

Kan iemand hier een oplossing voor geven?

Alvast hartelijk dank,

Een beginnen database-maker :D
 
Deze vraag is al vaker langsgekomen, en ook in de cursus Access behandeld :). Maar ik snap wel dat het zoeken van de oplossing op het forum lastig is, want zelf loop ik daar ook regelmatig tegenaan. Zelfs als ik wéét dat een vraag/oplossing al aan bod is geweest, kan ik dat antwoord meestal niet vinden :).

Eigenlijk is het niet zo moeilijk. Je hebt de tabellen neem ik aan aan elkaar gekoppeld ([Artikelen].[ArtikelID] --> [Voorraad].[ArtikelID]) zodat er Referentiële Integriteit is tussen de twee tabellen, en op je formulier heb je een keuzelijst met invoervak gemaakt om het artikel te kiezen. Die keuzelijst heb je dan, als het goed is, gekoppeld aan het veld ArtikelID in de tabel Voorraad.

Normaal gesproken zou het genoeg zijn, bijvoorbeeld in het geval van Personen, om de extra velden gewoon uit de gekoppelde tabel te halen. In het geval van personen, op een Facturen formulier/rapport, waar je de adresgegevens óók wilt zien, kun je die velden er gerust bij zetten. Zodra je een persoon kiest, worden de overige velden gelijk ingevuld. Als de persoon verhuist, zie je de volgende keer het nieuwe adres. Prima. Maar dat is niet handig bij Artikelen, waar de prijs nu eenmaal van fluctueert, dus je wilt de actuele prijs zien, die niet meer verandert als je in de tabel Artikelen de prijzen muteert. De prijs moet dus in de tabel worden opgeslagen. Overigens zet ik grote vraagtekens bij je werkwijze, want de prijs van een artikel heeft niets te maken met de voorraad van dat artikel. Ik heb (en zou dat ook nooit doen) nog nooit een systeem gemaakt waarbij in de Voorraadtabel ook Artikelprijzen worden opgeslagen. Nutteloze informatie. Ik gebruik de onderstaande techniek alleen op plekken waar het in mijn ogen nodig is: verkoop transacties en facturen. En aanverwante tabellen.

Om het verhaal af te maken (ik ga dus voor mijn eigen gemoedsrust verder met het opslaan van prijzen in een Verkoop tabel): in de tabel VerkoopDetails heb je dus het veld ArtikelID, én het veld Prijs opgenomen (naast uiteraard Aantal stuks). De keuzelijst waarmee je het artikel selecteert, bevat, naast de velden ArtikelID en ArtikelNaam, ook de velden Prijs en Eenheid. En die twee gegevens wil je dus toevoegen aan de tabel VerkoopDetails als je een artikel selecteert. Dat doe je dan met een stukje code, op basis van de gebeurtenis <Bij Klikken> van die keuzelijst. Die code ziet er dan ongeveer zo uit:
Code:
Private Sub cboArtikel_Click()
    With Me.cboArtikel
        Me.Prijs.Value = .Column(2)
        Me.Eenheid.Value = .Column(3)
    End With
End Sub

Daarbij ga ik even uit van de veldvolgorde zoals hierboven beschreven voor de keuzelijst: ArtikelID, ArtikelNaam, Prijs, Eenheid. Heb jij die anders, dan moet je de getallen in de code aanpassen. Kijk maar even of je er zo uit komt. En denk nog even goed na over het idee om Prijzen op te nemen in een Voorraad tabel. Lijkt mij dus nergens voor nodig.
 
Dank voor je reactie.

Ik had al het vermoeden dat deze vraag (vaker) voorbij gekomen zou zijn, maar zoeken (& vinden) is vrij lastig, zoals je zelf al aangeeft.

Even voor de helderheid :D
Op dit moment houd ik alle inkomende artikelen (vanaf onze leveranciers) bij in Excel, evenals de uitgaande (naar onze medewerkers). Hiermee hebben we, als klein bedrijf zijnde, inzicht in verbruiken, geldstromen, etc, etc. Echter, ik zou dit het liefst in een database doen, omdat dit mijns inziens gebruiksvriendelijker is (vooral wanneer ik er niet ben en een collega zaken moet gaan bijhouden).
Ik wil ook kunnen zien wat onze voorraad is in geld, dus vandaar dat ik "prijzen" heb opgenomen (incl. totaal). Zelf ben ik alweer tijden uit Access, dus ben alles opnieuw aan het bedenken; mogelijk heb je nog tips (een screenshot van m'n tabellen heb ik bijgevoegd). Je oplossing ga ik proberen :D

Knipsel.JPG
 
Ik wil ook kunnen zien wat onze voorraad is in geld, dus vandaar dat ik "prijzen" heb opgenomen (incl. totaal).
En dát is dus exact waarom je niet moet doen wat je van plan bent. Een artikel heeft één actuele prijs, en dat is de prijs die je in de tabel Artikelen opslaat, samen met de andere artikelgegevens. Ik zie niet zo snel een tabel Voorraad, al heb ik het vage vermoeden dat je daarvoor de tabel Inkomend gebruikt (wat dan een verkeerde naam is natuurlijk). Een tabel Medewerkers zou geen vooraad (van die medewerkers) moeten bevatten, maar de NAW gegevens, meer niet. Voor het beheren van je voorraad is één tabel in beginsel genoeg, waarin je zowel de inkomende als de uitgaande transacties vastlegt, alsmede jaarlijkse/maandelijkse tellingen. Dat laatste gebruik je natuurlijk om eens in de zoveel tijd met een blocnote door je voorraad heen te gaan en fysiek te controleren wat er nog op de planken ligt. Normaal gesproken moet dat overeen komen met de berekening Voorraad = [Inkomend]-[Uitgaand], maar er sneuvelt wel eens wat, en dat beïnvloedt uiteraard je voorraad.
Als je wilt weten wat je voorraad waard is, dan gebruik je dus die ene tabel om die berekening te maken, en daarbij koppel je de tabel Artikelen om de prijs op te halen, zodat je in je berekening de actuele waarde van je voorraad weet. Het heeft geen enkele zin om een andere waarde te weten, want daar heb je toch niks aan? Je wilt weten wat je voorraad op dat moment waard is.
Het enige voordeel van een tabel Inkomend (die ik dan Import zou noemen) is dat je een tabel hebt waarin je alle binnenkomende goederen vastlegt met datum, leverancierID prijs en aantal (als minimum denk ik) zodat je weet wat de goederen bij aanschaf hebben gekost. Bij de verkoop/levering doe je dat immers ook: de actuele prijs 'bevriezen' in de transacties.
 
En ik maar denken, dat ik (behoorlijk) goed op weg ben :D

Zoals je al kon zien op de bijgevoegde afbeelding heb ik meerdere tabellen gemaakt. In de tabel artikelen heb ik bijvoorbeeld de artikelen, artikelnummers en prijzen staan, waarbij ik in de tabel "inkomend" het artikel selecteer (en de daarbij behorende prijs automatisch gevuld wil hebben).

Ik wil bijvoorbeeld ook een query kunnen maken met de gebruikte hoeveelheden per medewerker; daarom heb ik een tabel "inkomend" gemaakt, omdat ik in de nog te maken tabel "uitgifte" (of iets dergelijks) bijvoorbeeld niet de leverancier hoef in te vullen.

Klinkt waarschijnlijk allemaal vrij chaotisch :D
 
Leg je proces eens uit, want ik snap er eerlijk gezegd niet zoveel van. Wat moet die tabel Inkomend precies doen? En waarom moet daar de prijs ook in?
 
Leg je proces eens uit, want ik snap er eerlijk gezegd niet zoveel van. Wat moet die tabel Inkomend precies doen? En waarom moet daar de prijs ook in?

In het kort...

Wij zijn een "productiebedrijf"; onze collega's voeren werkzaamheden uit bij klanten. Hierbij ver-/gebruiken zij materialen en/gereedschappen, zoals bv. handschoenen, diamantboren, hak-/boorhamers, etc. Deze zaken ontvangen wij van onze leveranciers. Ik doe onder andere de inkoop bij de leveranciers, maar ook de uitgifte aan de collega's.

Sommige zaken vertegenwoordigen een aanzienlijke waarde, dat we nagenoeg alles bijhouden; om inzicht te hebben, maar ook om ervan te (kunnen) leren. Want waarom gebruikt mdw. A twee diamantboren per week, terwijl mdw. B. een maand met 1 doet? Om maar een voorbeeld te noemen.
Zoals eerder aangegeven doe ik die registratie nu in Excel; hierin heb ik een document gemaakt waarin ik invul, wat er binnenkomt (bestelde artikelen, materiaal), maar ook wat eruit gaat. Tevens kan ik daarin direct de actuele voorraad zien, zodat ik zaken op tijd kan bestellen zonder hiervoor dagelijks een ronde door onze hal te maken om die inventarisatie te maken. Ook heb ik daarmee inzichtelijk wat we uitgeven aan inkoop, wat er (per medewerker) ge-/verbruikt wordt én de waarde van onze voorraad.

Alleen...Excel is hiervoor niet geheel handig voor, dus ben ik gestart om alles in Access te zetten. Daarmee is het ook gemakkelijker om te registreren voor een collega, die deze taken overneemt, wanneer ik niet aanwezig ben.

Hopelijk heb ik hiermee iets meer duidelijkheid verschaft. Dit is mijn eigen "projectje" en het is dus niet de bedoeling om hiervoor een heel pakket aan te schaffen, dat soortgelijke zaken kan.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan