Veel op veel relaties & input fomulier.

Status
Niet open voor verdere reacties.

muufley

Gebruiker
Lid geworden
23 sep 2010
Berichten
47
Hallo, ik heb een probleem om gegevens in te voeren (via een input formulier) op meerder tabellen die met een veel op veel relatie met elkaar verbonden zijn.
De database is bedoeld voor stock beheer. Voor een duidelijkere weergave heb ik een screenshot gemaakt van de relaties:

relaties.jpg


-"tblamaltheesub" bevat algemene gegevens aangaande een product zoals artikelcode, artikelomschrijving, looptijd houdbaarheidsdatum, enz

-"tblgebruikers" bevat de gebruiker gegevens

-"tbleassociatie" is de associatietabel (junctiontabel) voor de veel op veel relatie tussen tblgebruikers en tblamaltheehoofd.

-"tblamaltheehoofd" bevat detaillering van het product zoals hoeveelheden, lot, positionering in stock.


De veel op veel relatie is er omdat een gebruiker veel soorten artikels in stock kan invoeren maar één artikel kan ook door verschillende gebruikers ingevoerd worden. De Eén op veel relatie tss tblamaltheesub en tblamaltheehoofd betekent dat een artikel kan bestaan uit verschillende loten met telkens andere aantallen (per pallet). Voor zover het relatie gedeelte denk ik dat ik goed zit.
De verchillende gegevens zoals "gebruiker" uit tblgebruikers, "categorie" uit tblamaltheesub, "lot" uit tblamaltheehoofd en "gewicht" uit tbleamaltheehoofd worden samen gezet (met de relaties) in een query.

Ik maak een formulier (zonder subformulieren) gebasseerd op deze query zodat de gebruiker de gegevens kan invoeren. Via een combo box kiest de gebruiker zijn naam waarna (ook via een combo box) het artikel gekozen wordt en de overige gegevens zoals "gewicht" en "lot" ook worden ook aangevuld.

Het probleem is echter dat enkel "gebruiker" kan gekozen worden en daarna niets meer, alle andere input control lijken op het formulier geblokkeerd te zijn, er is geen ingave mogelijk. Wanneer ik de query open kan ik wel waardes aanpassen, hoe komt het dat ik op het formulier geen verdere ingaves kan doen?



Nick
 
Laatst bewerkt:
Om jouw vraag te beantwoorden heb ik meer info nodig, zoals de query die je gebruikt voor je formulier. Je relaties zij op zich prima, al krijg ik de indruk dat de tabel [tblamaltheesub] de hoofdgegevens van je artikel bevat, en de tabel [blamaltheehoofd] de subgegevens, dus voor mijn gevoel moeten de namen andersom. Bovendien heb je, als je over artikelen praat, meestal een veld ArtikelID als sleutel, en jij gebruikt een veld Categorie. Dus wat je met de naamgeving aan het doen bent, ontgaat mij volledig. Zolang het voor jou duidelijk is, zou ik het overigens niet veranderen ;)

In beginsel moet je een formulier baseren op één tabel; de tabel waarin de mutaties worden vastgelegd. Van die tabel zul je dan ook meestal alle velden (moeten) opnemen. Daarnaast kun je nog uit andere tabellen velden tonen. Aan deze tabellen kun je dan echter geen records toevoegen, wat ook logisch is. Want dan zou je in problemen komen met de relaties tussen die tabellen. Controleer dus eerst of de bron van je formulier wel correct is.
 
Michel, ik geef toe dat de naamkeuze inderdaad wat ongelukkig is maar voor mij is het wel duidelijk. Later kan ik dat alsnog veranderen maar dit is nu niet belangrijk voor mij.
Ivm het formulier, zoals ik al eerder vermelde heeft het formulier als record source de query die elementen uit de drie tabellen neemt. De query bevat naast bepaalde velden die uit de tabellen genomen zijn ook nog een paar berekende waardes. Als ik via het formulier de waardes van die velden niet kan toevoegen wil dit dan zeggen dat mijn geheel concept verkeerd is?
Ik stel mij dan de vraag waarom ik diezelfde gegevens wel rechtstreeks in de querytabel kan ingeven zonder problemen maar via een formulier niet.
 
In beginsel ligt een formulier één-op-één op een tabel of query. Als je in de query records kan toevoegen, moet dat in het formulier ook kunnen. Tenzij je uiteraard eigenschappen van je formulier hebt veranderd. Zonder voorbeeld kunnen we dat natuurlijk niet controleren. Ik zie in je query desalniettemin een probleem dat het toevoegen van records onmogelijk zou moeten maken:
tblamaltheesub en tblamaltheehoofd betekent dat een artikel kan bestaan uit verschillende loten met telkens andere aantallen (per pallet). Voor zover het relatie gedeelte denk ik dat ik goed zit.

De verchhillende gegevens zoals "gebruiker" uit tblgebruikers, "categorie" uit tblamaltheesub, "lot" uit tblamaltheehoofd en "gewicht" uit tbleamaltheehoofd worden samen gezet (met de relaties) in een query

Ik zie hier al gegevens uit drie verschillende tabellen terug: [tblgebruikers], [tblamaltheesub] en [tblamaltheehoofd]. Hierbij is het veld Categorie een sleutelveld. Dat betekent, dat je alleen records kunt toevoegen aan de tabel [tblamaltheesub]. De overige gegevens in de query kun je wel muteren, maar je kunt met deze query dus geen records toevoegen aan de tabel [tblamaltheehoofd]. En volgens mij is dat wat je wilt doen. Maar om er meer van te kunnen zeggen, heb ik dus ofwel de query van je formulier nodig, of, beter nog, een voorbeeld van de db.
 
Michel, bij nader inzien heb je gelijk, ik kan dus inderdaad geen records toevoegen ook niet rechtstreeks op de query (ik basseerde mij eerder op de verkeerde query toen ik zei dat ik dat wel kon).
Is er dan geen manier mogelijk om een gebruiker ingaveveld op het formulier te zetten dat de input naar tblgebruikers schrijft met een veel-op-veel relatie?

Dit is mijn database Het ingave formulier heet "frmin", het formulier "frmin_2" is hetgeen ik wil bereiken maar daar wordt er een foutmelding gegeven van zodra ik een toevoeging wil maken (omwille van de relaties dus).
Kan ik op een andere manier toch ingaves doen op de tabel tblgebruikers?


Nick
 
Ik begrijp je niet; je hebt een query met hoofdzakelijk velden uit de tabel [tblamaltheehoofd] gebruikt, aangevuld met een aantal formules, en de velden [Gebruiker] uit [tblgebruikers] en [Categorie] uit [tblamaltheesub]. Dat kan maar tot één conclusie leiden: je wilt gegevens opslaan in de tabel [tblamaltheehoofd]. Dus vanwaar de vraag of je gegevens kan opslaan in [tblgebruikers]? Je gebruikt helemaal geen velden uit die tabel, behalve de naam. Hoe, en wat, wil je dan opslaan?
Overigens is één van de redenen (er zijn er meer) dat je niets kunt toevoegen, het veld [Categorie] uit [tblamaltheesub]. Dit veld geeft (vanwege de relaties) dezelfde waarde als [Cathoofd] uit [tblamaltheehoofd]. Je hebt beide velden in je query zitten, maar bij het uitvoeren van de query gezien dat er hetzelfde in staat en vervolgens gedacht: dan kan er wel een weg, waarna je alsnog twee fouten hebt gemaakt: ten eerste heb je het extra veld niet verwijderd, maar in het resultaat slechts verborgen, wat eigenlijk geen oplossing is, maar fout twee is eigenlijk erger: je hebt het verkeerde veld genomen! Je had het veld [Categorie] uit [tblamaltheesub] uit de query moeten verwijderen... Daarmee is de query nog steeds niet bij te werken, maar dat komt door de formules.

Maar leg eerst eens uit wat je eigenlijk wilt met je formulier, want op deze manier is hij nooit bij te werken.
 
Michel, ik heb het zelf kunnen oplossen (min of meer) zonder gebruik van de veel-op-veel relatie. Ik heb ipv daarvan een één op veel relatie tss tblgebruikers en een gebruiker veld op tblamaltheehoofd. Mijn bedoeling was dus om een gebruiker input veld op het formulier te plaatsen zodat de gebruiker zijn naam kan kiezen uit de tabel tblgebruikers maar dit is nu niet meer nodig. De gebruiker naam wordt nu opgeslaan in de tabel tblamaltheehoofd en tblgebruikers is nu daarop gelinkt met een één op veel relatie.
Over die twee velden "categorie" en "cathoofd" dacht ik ook der is er maar één nodig, maar voor één of andere reden werkt een ander formulier (frminstock) dan niet meer naar behoren, ik kan dan geen artikels meer filteren. Maar dit is voor mij niet een groot probleem. Ik weet dat de database geen orderlijk werkje is, het (grote) opruim-en herbenaming werk volgt later.

Nick.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan