Avatar billede Senpei Juniormester
24. oktober 2017 - 13:00 Der er 10 kommentarer og
2 løsninger

hvordan relaterer jeg en tabel i en underformular til et valgt element i en liste

Hej folkens

Jeg har i en formular en liste "lstSager" der viser indholdet fra en bestemt tabel kaldet "tblSager".

Er det muligt at lave underformular der viser indholdet af en anden tabel "tblBeregninger", som er relateret til "tblSager", baseret på et valgt element i en listen "lstSager".

Altså idéen er at jeg vælger en bestemt sag fra listen "lstSager", og så skal nogle bestemte beregninger fra en relateret tabel "tblBeregninger", vises i underformularen, som jeg skal have mulighed for at redigere i fra underformularen, 

Hvordan kan jeg gøre dette?
Avatar billede falster Ekspert
24. oktober 2017 - 13:26 #1
Der en del instruktionsvideoer på Youtube om linkning og sub forms. F.eks.:

https://www.youtube.com/watch?v=kOkUF7yqbt4

(Hvis andre kan komme med direkte løsninger, skal du måske være lidt mere præcis  om, hvor du "beregner" - i en forespørgsel, udenfor Access e.l.?)
Avatar billede Senpei Juniormester
24. oktober 2017 - 13:33 #2
Altså jeg havde tænkt mig at taste mine tal ind direkte i tabellen som bliver vist underformularen. Tabellen beregner så herefter selv de værdier jeg skal bruge. Ligesom hvis det havde været en excel ark. Forskellen er bare at den tabel der bliver vist i undeformularen skal være direkte relateret til det element fra tabellen "tblSager" som jeg vælger i listen "lstSager".

Hvis der er andre måder at lave ovenstående på er jeg også interesseret i at høre omkring dette.
Avatar billede terry Ekspert
24. oktober 2017 - 14:56 #3
If the main form has a list box which contains data from tblSager then you cant have a linked sub form, or I dont think you can. But you can have a sub form which gets updated when you choose an item in your Sager list box.

A while I made a similar example or your, where you had two list boxes. One showing Bruger information, and another for Sager information. When you chose an item in Bruger list the contents for sager list changed showing data related to the chosen Bruger.

So first you need to alter the sub forms record source so it contains a criteria which references your sager list.
EG: [Forms]![Form1]![LstSager]

and some code to requery the sub form when you chose an item in list

Private Sub LstSager_AfterUpdate()

    Me.FrmSubBeregninger.Requery
   
End Sub
Avatar billede terry Ekspert
24. oktober 2017 - 14:57 #4
A while I made = A while ago I made ..
Avatar billede Senpei Juniormester
24. oktober 2017 - 15:15 #5
Tak for dit svar Terry

Problemet er at når jeg bruger en underformular som objekt, så er der tilsyneladende ingen "record source" parameter. Istedet er der noget som hedder "KildeObjekt" eller "SourceObject" om du vil. Denne parameter kan jeg kun bruge til angive hvilken tabel eller forespørgsel dataene skal hentes fra, men jeg kan ikke bruge vba kode til at styre den. Den henter bare dataene fra den angivne tabel og viser dem.

Har du nogle ideer til hvordan det så kan løses?
Avatar billede terry Ekspert
24. oktober 2017 - 15:47 #6
KildeObjekt is the same as "record source".
You need to change the tabel to an SQL SELECT statement with a criteria.
If you press the little icon containing ... which is beside the table name you go into query builder. Here choose the fields you want in the form which I guess its all of them.
Then you need to include a criteria so its end up similar to this (table and fields names will differ)
So mit only selects the records which are related to the selected record in lstSag


SELECT tblBeregninger.ID, tblBeregninger.SagID, tblBeregninger.field1, tblBeregninger.field2 FROM tblBeregninger WHERE (((tblBeregninger.SagID)=[Forms]![Form1]![LstSag]));
Avatar billede Senpei Juniormester
25. oktober 2017 - 17:00 #7
Okay tak,

Det ser ud som at jeg godt kan få den til at skifte tabel vha. din metode.

Men den opdatere ikke tabellen automatisk. Jeg bliver nød til først at ind i query builder og derefter køre query'en. Nå jeg lukker query builder igen er tabellen opdateret. Men hvordan får jeg den til at gøre det automatisk?

Jeg vil gerne kunne markere et element i listen, og så skal underformularen skifte tabel af sig selv.
Avatar billede terry Ekspert
25. oktober 2017 - 19:36 #8
"Det ser ud som at jeg godt kan få den til at skifte tabel"
Its not changing table but the data which is being selected from the table.
The data it selects is dependant on what row you have selected in the listbox.


"Men den opdatere ikke tabellen automatisk"?

Not sure I understand what you mean here :-(

is it possible for me to see the dB?
I think you already have my email address
Avatar billede fdata Forsker
25. oktober 2017 - 23:05 #9
Jeg smider lige en løsning:

Opret et tekstfelt på din hovedformular. Vi kalder det her: "Nøgle". Sæt Synlig til False.

I feltet lstSager's AfterUpdate lægger du: Me.Nøgle = Me.lstSager

Link så din subform til Nøgle således: På din subforms egenskabsfane "Data" sætter du "OverordnedeFelter" til "Nøgle" og "UnderordnedeFelter" til det felt, der indeholder sagsnummeret på din subform.

Vupti! Så spiller det - og du får endda automatisk indsat sagsnummeret i den subform.

... og så er det måske elegant, hvis du lægger følgende i din hovedformulars FormOpen hændelse:
  Me.Nøgle = Null
  Me.lstSager = Null
så din subform er tom til at starte med.
Avatar billede terry Ekspert
26. oktober 2017 - 14:56 #10
we can actually take that idea a step further to make it simpler.

List box on main form contains sager, sub form contains beregninger.

in link master field write lstSager (or name of listbox)
in link child fields SagID (or name of field which is related to sager

No need for an more code
Avatar billede terry Ekspert
26. oktober 2017 - 14:57 #11
and KildeObjekt for sub form is name of table EG tblBeregninger
Avatar billede fdata Forsker
28. oktober 2017 - 20:04 #12
>>Terry
You're right.
Ville bare vise effekten lidt tydeligere ;O)
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

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