Subdatasheet Access 2007 filtert auto info

  • Onderwerp starter Onderwerp starter Legan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Legan

Gebruiker
Lid geworden
5 mrt 2008
Berichten
5
Ik heb in Access 2007 een filmdatabase gemaakt ter vervanging van het excel bestand. In 1 tabel (XXX) staat alle info van de films. Hieronder een plaatje:

Om de tabel 'XXX' heb ik een form gemaakt waarin je alle info kan invoeren. Er zijn bijvoorbeeld 4 beschikbare velden voor acteurs. Deze info is afkomstig van de tabel Cast en kan ook via de form worden aangepast. Maar als ik de subdatasheet open zie ik niks staan. Zie plaatje:

Ik ontdekte dat de info er alleen komt te staan als alle 4 velden (zijn ook vier kolommen in de hoofdtabel 'XXX') precies dezelfde info hebben, bijvoorbeeld 'Affleck, Ben'. In tabellen waar maar 1 veld aan is gekoppeld verschijnt de info wel correct.

Is er een manier ervoor te zorgen dat de subdatasheet de info niet filtert? Dit zou dus inhouden dat als ik bij dezelfde film 4x 'Affleck, Ben' invoer, dat de subdatasheet van de tabel 'Cast' die info 4x moet laten zien.

Bij de properties van de tabel is de 'Subdatasheet Name' gezet op 'Auto' en zijn zowel de 'Link Child Fields' als de 'Link Master Fields' leeg.
Als ik ga naar 'Insert Subdatasheet', dan krijg ik in de 'Link Child Fields' te zien 'Cast 1;Cast 2;Cast 3;Cast 4' en in de 'Link Master Fields' staat er 'Cast;Cast;Cast;Cast'.

Ik hoop dat alles een beetje duidelijk is. Ik wil wel erbij zeggen dat dit mijn eerste poging in Access is, dus het kan zijn dat ik dingen anders had moeten (of moet) aanpakken.
 
Doorlopend formulier

Je hebt het over een formulier, maar de plaatjes laten tabellen zien, daarom snap ik niet zo goed wat nu de bedoeling is. Waarschijnlijk kun je al iets verbeteren door het subformulier op doorlopend te zetten, dan krijg je wel alle rijen te zien.
 
Je hebt het over een formulier, maar de plaatjes laten tabellen zien, daarom snap ik niet zo goed wat nu de bedoeling is. Waarschijnlijk kun je al iets verbeteren door het subformulier op doorlopend te zetten, dan krijg je wel alle rijen te zien.
Dit is een gedeelte van de formulier waarover ik spreek:

Als voorbeeld haalde ik Cast aan. Daaronder zijn 4 velden (die elk een eigen kolom hebben in de hoofdtabel XXX) en wat je daar invoert (de bedoeling is natuurlijk acteurs/actrices), wordt weggeschreven naar of opgehaald uit de tabel Cast. Als ik dan naar de tabel Cast ga, dan staat daar iedere unieke invoer. Maar als ik dan, zoals het 2e plaatje in de 1e post laat zien, klik op een acteur, dan krijg ik niets te zien.
Als het maar 1 veld betreft (in mijn geval bijv de score), dan krijg ik de info wel correct:

Ik hoop dat het zo duidelijker is.
 
Laatst bewerkt:
Relaties

Misschien komt het omdat je oordelen aan de films hangen en niet aan de cast. Als je dan de oordelen bij de cast wilt zien, dan zul een query moeten maken met de beoordelingen, de films en de cast aan elkaar geknoopt.
 
Misschien komt het omdat je oordelen aan de films hangen en niet aan de cast. Als je dan de oordelen bij de cast wilt zien, dan zul een query moeten maken met de beoordelingen, de films en de cast aan elkaar geknoopt.
Ik denk dat ik, waarschijnlijk omdat ik een Access beginneling ben, het niet goed uitleg. Ik begon met de tabel XXX en heb daarin allerlei kolommen gemaakt zoals Titel, Oordeel, Personage 1, Personage 2, Personage 3, Personage 4, Regie 1, Regie 2, Regie 3, ... etc... Toen heb ik gelijk de formulier gemaakt. Maar ik merkte al snel dat ik tabellen moest maken om allerlei informatie beter op te slaan. Deze info sloeg ik eerst op in een value list.
Dus heb ik een paar tabellen gemaakt, zoals Cast, Oordeel en anderen die je op het plaatje kan zien. Tijdens het invullen van de formulier merkte ik ineens de subformulieren op. Ik zag dat als ik in de tabel Oordeel keek, ik kon kijken bij iedere invoer (1,0 - 1,5 - 2,0 etc... t/m 10) welke films die oordeel hadden gekregen. Dus als ik bij de 1 klik op de + zie ik dus alle films uit de tabel XXX die een 1 hadden gekregen. Top dacht ik dat Access dat automatisch doet.

Maar bij tabellen waar meer velden van de formulier aan hangen (en voor iedere veld in de formulier is er 1 kolom in de tabel XXX) zoals Regie, Cast, Bedrijven, ... verscheen er niets. Alleen als de invoer in die velden precies hetzelfde is, dan krijg ik in de subformulier alle records van de tabel XXX die op de desbetreffende waarde heeft.

En dat is nu jammer. Ik dacht dat het misschien was omdat de tabellen (geloof ik) allemaal een one-to-many relationship hebben. misschien moet het een soort many to many zijn of zo.
 
Laatst bewerkt:
Waarom vier

Je hebt in de tabel xxx vier velden voor cast gemaakt. Wat nu als er meer dan 4 mee hebben gedaan? De klassieke manier is om er een tabel tussen te maken voor je cast. Hier zet je een verwijzing in naar tabel xxx ten teken dat de gekozen cast-member bij een bepaalde film hoort. Daarna komt een verwijzing naar de cast-members tabel, hier zet je de gekozen persoon in. Je kunt dan op het xxx-formulier een subformulier zetten waarin je je cast onder elkaar laat zien, hier kun je dan ook nieuwe castmembers aan toevoegen.
 
Je hebt in de tabel xxx vier velden voor cast gemaakt. Wat nu als er meer dan 4 mee hebben gedaan?
Als ik het goed begrijp, bedoel je dit in relatie tot een film toch? Natuurlijk doen er meer personen mee, maar alleen de 4 hoofdrolspelers worden genoteerd, waarbij elk een eigen kolom heeft in de tabel XXX.
De klassieke manier is om er een tabel tussen te maken voor je cast. Hier zet je een verwijzing in naar tabel xxx ten teken dat de gekozen cast-member bij een bepaalde film hoort. Daarna komt een verwijzing naar de cast-members tabel, hier zet je de gekozen persoon in. Je kunt dan op het xxx-formulier een subformulier zetten waarin je je cast onder elkaar laat zien, hier kun je dan ook nieuwe castmembers aan toevoegen.
Ik heb toch al een tabel Cast die gelinkt is naar tabel XXX of begrijp ik je verkeerd? Helaas krijg je dit wanneer een expert met een leek praat, dus hou vol met mij;).
Als ik zo kijk, dan lijkt mij de schuldige de input bij de subdatasheet. Doordat er bij 'Link Child Fields' 4 verwijzingen staan, wordt de informatie zo gefilterd dat een record moet voldoen aan alle 4 de eisen voor het wordt toegelaten.

Als ik volgens het plaatje bij 'Link Child Fields' alleen maar Cast 1 laat staan, dan werkt het dus gedeeltelijk. Ik krijg dan alle info te zien uit de tabel XXX. Maar ja, dan heb ik dus alleen Cast 1 (aka de hoofdrolspeler). Zodra ik nog één aan 'Link Chield Field' toevoeg, dan krijg ik niets te zien. Access zegt in feite dus: Ik laat alleen wat zien als Cast 1 en Cast 2 100% gelijk zijn.
En dat wil ik nu niet. Access moet niet zelf gaan selecteren. Als ik zo verder elaboreer erover, is wat ik wil teveel gevraagd op deze manier? Moet ik soms een query maken om dit voor elkaar te krijgen en dan aan de query een subdatasheet hangen? Of kraam ik nu onzin uity :o ?
 
Dubbele relatie

De koppeling die je nu hebt gelegd zorgt ervoor dat alleen casts worden weergegeven die in alle vier de kolommen van de film staan. Je kunt de 4 cast-members in 4 aparte kolommen in de film-tabel zetten, maar dan moet je ze ook allevier apart weergeven op een formulier, bijvoorbeeld met 4 comboboxen of in de onderliggende query door 4 keer de cast-tabel te koppelen aan de vier kolommen van de film-tabel. Als je de cast-members in een subformulier wilt laten zien, dan zul je een tussentabel aan moeten leggen waarin je per film een cast-member vastlegt. Een dergelijke tabel heeft dus een veld met een verwijzing naar de film-tabel en een veld met een verwijzing naar de cast-tabel. Dit zou de huidige 4 kolommen met cast-members vervangen, je gebruikt dit niet naast elkaar. Je hebt dus een keuze welke constructie je wilt gebruiken, maar je keuze heeft wel gevolgen voor de verdere manier van werken.
 
De koppeling die je nu hebt gelegd zorgt ervoor dat alleen casts worden weergegeven die in alle vier de kolommen van de film staan. Je kunt de 4 cast-members in 4 aparte kolommen in de film-tabel zetten, maar dan moet je ze ook allevier apart weergeven op een formulier, bijvoorbeeld met 4 comboboxen of in de onderliggende query door 4 keer de cast-tabel te koppelen aan de vier kolommen van de film-tabel. Als je de cast-members in een subformulier wilt laten zien, dan zul je een tussentabel aan moeten leggen waarin je per film een cast-member vastlegt. Een dergelijke tabel heeft dus een veld met een verwijzing naar de film-tabel en een veld met een verwijzing naar de cast-tabel. Dit zou de huidige 4 kolommen met cast-members vervangen, je gebruikt dit niet naast elkaar. Je hebt dus een keuze welke constructie je wilt gebruiken, maar je keuze heeft wel gevolgen voor de verdere manier van werken.
Ik ga eens even ermee stoeien op jouw manier. Alvast bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan