4 Velden linken

Status
Niet open voor verdere reacties.

rvdsch

Gebruiker
Lid geworden
18 jun 2009
Berichten
170
Beste forummers,

Een nieuw probleem. Ik wil een tabel(len) maken met de volgende informatie,
de naam van de leverancier en de producten die hij levert. Dit lukt me wel maar nou komt die: De leverancier kan aan 4 locaties leveren voor 4 verschillende prijzen, hij kan ook aan slechts 1 locatie leveren.
Ik wil een tabel en een formulier waarin ik:
1. de Naam van de leverancier intoets
2. Alle producten die hij levert
3. De (eventuele) 4 locaties waarnaar hij levert met de bijbehorende prijzen erbij.

Ik heb mijn hoofd al flink hierover gebroken. Het lukt me wel maar ik krijg redelijk tijdrovende en foutgevoelige tabellen en procedures. Heeft iemand enig ide hoe dit op te lossen??
 
Beste forummers,

Een nieuw probleem. Ik wil een tabel(len) maken met de volgende informatie,
de naam van de leverancier en de producten die hij levert. Dit lukt me wel maar nou komt die: De leverancier kan aan 4 locaties leveren voor 4 verschillende prijzen, hij kan ook aan slechts 1 locatie leveren.
Ik wil een tabel en een formulier waarin ik:
1. de Naam van de leverancier intoets
2. Alle producten die hij levert
3. De (eventuele) 4 locaties waarnaar hij levert met de bijbehorende prijzen erbij.

Ik heb mijn hoofd al flink hierover gebroken. Het lukt me wel maar ik krijg redelijk tijdrovende en foutgevoelige tabellen en procedures. Heeft iemand enig ide hoe dit op te lossen??

steek je documentje er eens bij?
Dan kan men beter helpen.
en heb je draaitabellen al geprobeerd?

mvg Timothy
 
Ik neem aan dat de draaitabellen op een andere vraag slaan, want die zou ik hier nog niet in stelling brengen ;)
Ik neem aan dat je een aparte tabel hebt voor je leveranciers. Er zou ook een tabel moeten zijn/komen voor de verschillende lokaties, waarbij je dan ook de aanvullende gegevens als de afwijkende prijzen kwijt kunt.

Als je naar de verschillende gegevenssoorten kijkt, moet je de vraag stellen welke combinatie van gegevens uniek is. Bij een leverancier met verschillende lokaties en één prijs, zou ik de prijsinformatie opnemen in de leveranciertabel. De prijs hoort dan namelijk als gegeven bij de leverancier. In jou geval is de prijs afhankelijk van de lokatie, dus moet die naar de tabel Leverancier_Lokatie. (Als die bij jou zo heet) Uiteraard laat je in die tabel ook het LeveranciersID terugkomen, zodat je de twee tabellen aan elkaar kunt koppelen.

Voor de produkten geldt iets soortgelijks: normaal gesproken heb je een leverancier die bepaalde produkten levert. Je hebt dus ook een tabel Produkten. De koppeling tussen de twee tabellen leg je in de tabel Leverancier_Produkt, met een verwijzing naar zowel de sleutel LeverancierID en de sleutel ProduktID.

Lastiger wordt het als niet de leverancier bepalend is voor het produkt, maar de lokatie. Als je met lokale produkten werkt, zou dat bijvoorbeeld best kunnen. In dat geval moet je een koppeling hebben tussen Lokatie en Produkt. Omdat Lokatie ook al gekoppeld is aan Leverancier, kun je toch een overzicht krijgen van de produkten die een leverancier levert.

Bij een juiste tabelstructuur zou ook je formulier geen enkel probleem mogen zijn. Als je er niet uitkomt, moet je maar weer een voorbeeldje neerzetten, dan kijken we wat makkelijker mee!

Michel
 
Bedankt alvast voor alle hulp. Ik heb een voorbeelddatabase gemaakt met mijn probleem. Hij is niet zoals die in de echte database zit maar ik kan deze opzet vrij snel maken in de echte database. Het probleem is eigenlijk nog dat ik een handig formulier wil maken om alles in te vullen...

Ook zijn de prijzen vertrouwelijk dus ik wil ze graag beveiligen met een wachtwoord...

In mijn echte database zit ik met het probleem dat sommige tabellen gerepliceerd en andere lokaal dus ik kan er geen 'referentiele integriteit' tussen afdwingen. Hoe moet ik dat oplossen?
 

Bijlagen

  • Voorbeeldprobleemrvdschzipped.rar
    15,2 KB · Weergaven: 17
Wat ik nog meer vervelend aan mijn oplossing vind is dat het veld 'Product' nu een Numerieke waarde heeft gekregen wat het lastig maakt te werken met queries

Is er een manier om alles slechts 1 maal te hoeven in typen?
 
Db

Hoi rvdsch,

ik heb maar even een lijstje gemaakt met opmerkingen.

Aanpassingen
Allereerst ik heb een aantal aanpassingen gedaan in de db:
- Toeleveranciers primaire sleutel was naam veld niet id veld (autonummering)
- Relatie tussen productprijs en toeleveranciers (lever. is al gekoppeld via product).
- Relatie tabel product (leverancier) met tabel productprijs ( deze tabel is al gekoppeld met productID).
- productprijs(ID) was niet uniek (een product kan namelijk meerdere prijzen hebben).
- referentiele integriteit afdwingen (gegevens bijwerken en verwijderen bij relaties).

ID Numeriek
Het ID numeriek veld is bedoeld om gegevens uniek te maken en te houden in tabellen, dit komt door de autonummering. Dit zou ik ook niet (willen) veranderen. Het id nummer hoef je ook niet in te vullen, dit wordt voor je gedaan door autonummering.

Locatie
Hierin vermeld je de ontvangstlocaties (jullie magazijnen of klanten) neem ik aan. En niet de leverancierslocaties? Zo ja, dan klopt de relatie tussen tabellen locatie en productprijs. Zo nee, lees bericht van Octafish.

beveiliging
Ik zou de gehele database beveiligen. Doel database is volgens mij prijzen registratie (begrijp ik uit jouw verhaal). Dus Extra -> Beveiliging -> Database wachtwoord instellen. Dit verschilt overigens per Access versie, maar daar kom je vast wel uit. Zou ik ook pas aan het eind doen als de db af is.

Referentiele integriteit originele database
Zou je dit willen uitleggen?
Een voorbeeldje doet wonderen, mag ook in tekst.

Formulier productlijst
Ik heb even een formulier productlijst gemaakt. Let op het keuzevak leverancier (je ziet geen nummer!) Kijk bij rijbron, aantal kolommen en kolombreedten bij de eigenschappen van het veld.

Veel suc6 met de formulieren en queries!
 

Bijlagen

  • Voorbeeldprobleemrvdsch.zip
    13,8 KB · Weergaven: 43
Hoi Greenery80,

Bedankt voor je hulp met het maken van de tabellen. Ik heb het zelf ook toegepast en ik heb het gevoel dat de relatiestructuur van mijn tabellen goed is. Het enige waar ik nu mee zit zijn mijn formulieren. Het formulier Toeleveranciers is goed, degenen waar ik mee zit zijn Producten en Prijslijst. Ik heb Prijslijst een subformulier van Producten gemaakt.
Ik wil dat het subformulier Prijslijst de velden leverancier en product overneemt van hetgene wat in het formulier Producten is ingevuldt. Het moet dus eigenlijk onmogelijk zijn om vanuit het formulier Producten direct de velden Leverancier en Product te wijzigen in het formulier Prijslijst.

Het is me op de een of andere manier gelukt het formulier zover te krijgen om leverancier over te nemen (dwz als er een leverancier wordt ingetypt in formulier Producten dan komt die ook in het formulier Prijslijst). Ik heb geen idee hoe het me gelukt is en krijg het niet voor elkaar hetzelfde te doen voor het veld Product.

Tevens wil ik nog wat navigatieknoppen instellen maar dat is van later zorg. Ik heb inmiddels wat boeken gehaald en ga nog wat oude topics doorlopen.
iig hardstikke bedankt allemaal
 

Bijlagen

  • dbKBzipped.rar
    44 KB · Weergaven: 21
Ik ben inmiddels aan het lezen geslagen. Het is dus bij referentiele integriteit zo dat maar een veld van de ene tabel in de andere kan staan. Dus tussen de tabellen Leverancier en Producten kan alleen het veld LeverID staan en niet LeverID en NaamLeverancier.
Ik vind het lastig om de beste structuur te maken. Het liefst werk ik niet met autonummering want dan zie ik in de tabel niet zo goed wat er nou gebruikt wordt, een nummertje zegt mij niets.
 
referentiele integriteit

Met referentiële integriteit wordt bedoeld dat er sprake is van interne consistentie tussen de verschillende tabellen. Dus als men een leverancier bijwerkt of verwijderd dan wordt dit doorgevoerd in andere tabellen.

Je kunt wel in 2 tabellen LeverID en NaamLeverancier hebben staan, maar dan zal de db niet echt consistent zijn. En je hebt dubbele registratie van naamLeverancier.

Het klopt dat een nummertje niet veel zegt, maar je zult vrijwel nooit zoeken op dat autonummer. Je zult gaan zoeken op een leverancier, product of prijsinfo. En dit doe je door meerdere tabellen in een query te zetten en dan te zoeken op leveranciernaam bijvoorbeeld.
 
Ok dus dan krijg je idd. 1 unieke code wat tabellen gemeen hebben. Ik wil later een hierarchie bouwen in een formulier, zie http://www.datapigtechnologies.com/flashfiles/combobox2.html
Is dat nog steeds mogelijk of moet ik dan ook met de cijfertjes gaan werken? Ik weet dat het wellicht mogelijk is om zowel de naam als de cijfers weer te geven.

Het is dus helaas onmogelijk een formulier te maken waarin je
1 keer de leverancier intoetst
1 keer het product
1 keer de verschillende locaties met de bijbehorende prijzen.

Hetgene waar ik dus eigenlijk mee zit is dus dat als een leverancier op meerdere locaties levert ik dan telkens per locatie opnieuw de leverancier en het product moet intoetsen. Ik heb al zitten priegen met subforms maar het lukt me niet echt.
 
Laatst bewerkt:
Ik heb het antwoord gevonden. Ik voeg de Product tabel samen met de Prijstabel. Vervolgens maak ik een formulier met Leverancier&Product en een subformulier Locatie&Prijs. Zodoende hoef ik alles maar 1 keer in te vullen en kan ik blijven querieeen.
Voor allen die meegedacht hebben, hardstikke bedankt:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan