18. september 2017 - 12:55Der er
9 kommentarer og 2 løsninger
Hvordan viser jeg relaterede data fra en mange til mange relation i en liste
Hej med jer
Først og fremmest vil jeg sige at jeg er ret ny til MS Acces så bær over med mig. Jeg har et spørgsmål, som jeg håber i kan hjælpe med, og måske mange flere i fremtiden. Jeg har kastet mig ud i noget access vba programmering i forbindelse med en opgave på arbejdet. Jeg kendte ikke noget til Access før jeg begyndte så jeg prøver mig frem og lærer tingene langsomt efterhånden som problemerne opstår. Men nok om det. Her kommer en beskrivelse af mit problem:
1. Jeg har to tabeller kaldet "tblBruger" og "tblSag". Disse tabeller har jeg forbundet via en joint tabel kaldet "tblBrugerSag" sådan at de danner en mange til manger relation. Idéen er at en bruger kan have mange sager, og samtidig kan en sag have mange brugere.
2. jeg har lavet en formular med to lister. I den ene liste "LstBruger" vises brugerne, som er gemt i tabel "tblBruger" . Jeg har oprettet trykknapper som giver mig adgang til at redigere i tabel "tblBruger". Så langt så godt.
3. Idéen er at man vælger en bruger fra listen "LstBruger". Herefter kan man logge ind med et kodeord. Hvis kodeordet accepteres aktiveres den anden liste "LstSag", som nu skal vise alle de sager fra tabellen "tblSag" som er relateret til den valgte bruger fra "LstBruger" via mange til mange relationen.
Det er her jeg går kold. Jeg kan få login knappen til at virke, men jeg ved ikke hvordan jeg får listen til at vise lige præcis de sager, som er relateret til den valgte bruger, og kun dem.
Jeg forestiller mig at jeg skal anvende en eller anden form for forespørgsel som rækkekilde til listen "LstSag", og anvende et eller andet form for kriterie, men jeg ved ikke hvordan det skal gøres.
Er der nogen der kan hjælpe mig med dette problem?
This is just one idea, I'm sure it can be done differently.
Make a query whicg joins all three tables, something like this.
SELECT tblBruger.*, tblSag.* FROM tblSag INNER JOIN (tblBruger INNER JOIN tblBrugerSag ON tblBruger.ID = tblBrugerSag.BrugerID) ON tblSag.ID = tblBrugerSag.SagID;
Now when you have selected a user (bruger) you have an SQl similar to this
SELECT qryBrugerSag.*, qryBrugerSag.tblBruger.ID FROM qryBrugerSag WHERE (((qryBrugerSag.tblBruger.ID)=[Bruger ID?]));
If you run the second SQL statement you wil lbe asked to enter a brugerID, but you can replace the parameter [Bruger ID?] so it refers to a field on the form
I've made a simple example where I have a form (form1) with a listbox lstBruger and rowsource =
SELECT [tblBruger].[ID], [tblBruger].[Bruger] FROM tblBruger ORDER BY [Bruger];
a query (qryBrugerSag) SQL =
SELECT tblBruger.ID AS BrugerID, tblBruger.Bruger, tblSag.ID AS SagID, tblSag.Sag FROM tblSag INNER JOIN (tblBruger INNER JOIN tblBrugerSag ON tblBruger.ID = tblBrugerSag.BrugerID) ON tblSag.ID = tblBrugerSag.SagID;
On the form a listbox (lstSag) Rowsource = SELECT qryBrugerSag.BrugerID, qryBrugerSag.Bruger, qryBrugerSag.SagID, qryBrugerSag.Sag FROM qryBrugerSag WHERE (((qryBrugerSag.BrugerID)=[Forms]![Form1]![LstBruger]));
In the Afterupdate event for lstBruger you need some code to requery lstSag
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.