Avatar billede Senpei Juniormester
18. september 2017 - 12:55 Der 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?
Avatar billede Rune1983 Ekspert
18. september 2017 - 13:04 #1
Skal du ikke have noget ala.
SELECT * FROM tblBrugerSag WHERE BrugerID=LstBruger
Avatar billede terry Ekspert
18. september 2017 - 13:32 #2
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
Avatar billede terry Ekspert
18. september 2017 - 14:12 #3
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

LstSag.Requery
Avatar billede Senpei Juniormester
18. september 2017 - 14:12 #4
Hvor skal jeg skrive ovenstående? Under kriterier i en forespørgslen eller?
Avatar billede terry Ekspert
18. september 2017 - 14:22 #5
I can send you this example if you like, email?
Avatar billede Senpei Juniormester
18. september 2017 - 14:31 #6
Meget gerne:

a.klingest@gmail.com

Tak :)
Avatar billede Senpei Juniormester
19. september 2017 - 11:23 #7
HI Terry

I would be very happy to recieve your example by e-mail.

You may send it to a.klingest@gmail.com

thx. :)
Avatar billede terry Ekspert
19. september 2017 - 12:40 #8
Sorry, sent it to klingest .. without a.
On the way now
Avatar billede Senpei Juniormester
19. september 2017 - 14:52 #9
Tak for hjælpen
Avatar billede terry Ekspert
19. september 2017 - 15:05 #10
Selv tak. Hope the example help you find solution.
Avatar billede Senpei Juniormester
19. september 2017 - 15:13 #11
I did find a solution by the help of your example
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester