Avatar billede Jedi Senpei Juniormester
01. februar 2019 - 15:21 Der er 10 kommentarer og
2 løsninger

Skift imellem underformularer forårsager problemer.

Jeg har en hoved formular kaldet "main" med en indbygget sub/under formular. 

Hovedformularen "main" har to knapper på. Knappernes funktion er, at når man trykker på hhv. den ene eller den anden, så ændres under formularens "source object". Underformularen linker således til to forskellige formularer, alt efter hvilken knap man har trykket på. De to formularer som der kan linkes til har jeg kaldet "subMain1" og "subMain2".

"Submain1" indholder en listbox kaldet "lstbox1", som viser data fra en af mine tabeller.
"Submain2" indeholder ligeledes en listbox kaldet "lstbox2", som viser data fra en af mine tabeller, men indholdet er baseret på hvilke data jeg har valgt i 
i "lstbox1". Eller sådan burde det i hvert fald være.

Problemet er at når jeg skifter imellem de to underformularer, så sletter den markeringen af de data, som jeg i første omgang har valgt. 

Eksempel:

1. Jeg åbner  hovedformularen "main", og den indlæser automatisk underformularen "subMain1". Alt er som det skal være.

2. Jeg markerer nu en række i "lstbox1".

3. Jeg klikker nu på knappen, der skifter underformularen til "subMain2", og forventer at se data i "lstbox2", som er baseret på de valgte data i "lstbox1", men "lstbox2" er til min overraskelse tom.

4. Jeg trykker nu på knapper der skifter til "subMain1", og kan se, at der ikke er markeret nogle data i "lstbox1".

5. Jeg tænker at programmet, da jeg skiftede til underformular "subMain2", har slettet markeringen i "lstbox1" og derfor er "lstbox2" tom.
 
Men hvad er der galt? og hvordan får jeg det til at virker.

PS. Jeg har testet det, hvor "subMain1" og "subMain2" ikke var underformularer til hovedformularen "main". Altså som to uafhængige formularer, og jeg kan få delen med  at baseret data i "lstbox2" på de valgte data i  ""lstbox1", til at virke. Det er kun når jeg skifter imellem dem som underformularer, via knappet på hovedformularen "main", at det går galt.

Håber at nogen kan hjælpe mig her.
Avatar billede terry Ekspert
01. februar 2019 - 16:55 #1
After a very quick read through your question, I dont really understand how you can expect to see data in one listbox, based on a selection in another listbox which no longer exists!
Avatar billede terry Ekspert
01. februar 2019 - 16:56 #2
is it possible to see your dB, so I can better understand the problem?
ekspertenATsanthell.dk
AT = @
Avatar billede terry Ekspert
01. februar 2019 - 16:57 #3
maybe an idea was to have a main form with a tab control containing both sub forms, that way both sub forms are open at the same time
Avatar billede terry Ekspert
01. februar 2019 - 17:06 #4
you also have this question https://www.computerworld.dk/eksperten/spm/1027101
still open ;-)
Avatar billede fdata Forsker
01. februar 2019 - 18:01 #5
Når du skifter Source Object lukker du rent faktisk den ene subform og åbner den anden. Den, du lukkede, er dermed udefineret, så du kan ikke referere til den.
Når du skifter tilbage til subMain1 er listen tom, for nu er subformen indlæst påny og uvidende om hvad du foretog dig sidste gang, du åbnede den.

I stedet for at skifte Source Object kunne du jo lægge begge subforms på din hovedform og så skiftevis slå Form.Visible til og fra på dem. Så er de begge åbne samtidig (dog ikke vist samtidig) og du kan frit referere til dem begge.
Avatar billede Jedi Senpei Juniormester
02. februar 2019 - 10:28 #6
Tak for jeres svar.

Jeg kigger på det i næste uge og vender tilbage.
Avatar billede Jedi Senpei Juniormester
07. februar 2019 - 16:48 #7
Hej igen

Jeg tror det er den rigtige fremgangsmåde at ligge to subformularer på main hovedformularen.

Jeg kan dog umiddelbart ikke få "SubMain2" til at opdatere når jeg markerer noget i listen på "Submain1".

Kan det have noget at gøre med Master/child link?
Avatar billede terry Ekspert
08. februar 2019 - 09:38 #8
Normally the Master/child fields are used to keep main form and a sub form in sync, not two sub forms.

I think you need to give more information so we better understand what your trying to do.
Avatar billede fdata Forsker
08. februar 2019 - 10:41 #9
Som terry skriver: Lidt mere info, please; men du har nok brug for et eller andet i denne stil:

Opret et ubundet felt (her: DitFelt) på din hovedform.
Benyt DitFelt som link-felt til Submain2.
På Submain1 lægger du i lstbox1.AfterUpdate : Me.Parent.DitFelt=<DetValgte>
Avatar billede Jedi Senpei Juniormester
08. februar 2019 - 13:36 #10
OK

Jeg har omdøbt de forskellige formularer en smule for at det forhåbentlig giver bedre mening.

Nedenfor følger en forklaring af de forskellige formularer og underformularer.

Note: "frm" står for formular og "sFrm" står for underformular (som i subForm).

- frm_main: Hovedformular

- frm_Submain: Almindelig formular der bliver vist i underformular  "sFrm_Submain".
ha. egenskaben "source object". Den indeholder listboksen "lstbox1".

- frm_kabler: Almindelig formular der bliver vist i underformular  "sFrm_kabler" vha. egenskaben "source object". Den indeholder listboksen "lstbox2".

- sFrm_main: Underformular placeret på hovedformularen "frm_main".

- sFrm_Kabler: Underformular placeret på hovedformularen "frm_kabler".

Så jeg fulgte jeres råd og lagde de to underformularer "sFrm_Submain" og "sFrm_Kabler" på hovedformularen "frm_main". Jeg kan nu skifte imellem dem vha. en knap på hovedformularen ved at gøre dem skiftevis synlige eller usynlige.

De to listbokse "lstbox1" og "lstbox2" viser data fra to forskellige tabeller, som jeg her kalder "tabel1" og "tabel2". Data i "tabel2" er relateret til dataene i "tabel1" i en en-mange relation.

Jeg vil gerne have "listbox2", som er vist i underformular "sFrm_kabler", til at vise data baseret på de data brugeren har valgt i "lstbox1", som er vist i underformular "sFrm_subMain", men det er som om den ikke opdaterer underformularen "sFrm_kabler" ordentlig. Dog sker der alligevel et eller andet, fordi når jeg markerer data i "lstbox1", og herefter åbner den almindelige formular "frm_kabler", så er den opdateret og dataene er vist rigtigt i "lstbox1".

Jeg ved ikke hvorfor den ikke opdaterer underformularen "sFrm_kabler" og det er det jeg håber i kan hjælpe med at svare på?

Jeg håber at jeg har gjort mig forståelig, selvom indlægget blev lidt langt. Ellers prøver jeg gerne igen, hvis i er i tvivl om noget. Jeg kan desværre ikke sende den rigtige fil til jer, da arbejdet ikke tillader det.

Mvh. Senpei.
Avatar billede fdata Forsker
08. februar 2019 - 18:25 #11
Øhm,. Du må nok lige prøve at forklare igen.
Dine kommentarer virker lidt selvmodsigende:

... når jeg markerer data i "lstbox1", og herefter åbner den almindelige formular "frm_kabler", så er den opdateret og dataene er vist rigtigt i "lstbox1

... Jeg ved ikke hvorfor den ikke opdaterer underformularen "sFrm_kabler"

Spørgsmål: Bliver "frm_kabler" opdateret eller ej?

Hvis du har linket "sFrm_Kabler" korrekt til din main form, burde Access opdatere "sFrm_Kabler", når du kører den lille stump kode, der opdaterer link-feltet (men det ser du ikke, for "sFrm_Kabler" er jo på det tidspunkt skjult - eller hvad?).

Hvad er det helt præcist, der IKKE virker?
Avatar billede Senpei Juniormester
08. februar 2019 - 21:02 #12
Tak for jeres svar.

Jeg har løst problemet.
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