Avatar billede mhq Nybegynder
21. oktober 2003 - 21:11 Der er 9 kommentarer og
1 løsning

Ændre subform afh af valg

Har en mainform indeholdende tabsheets.

Når jeg vælger Option_1 på Tabsheet_1, skal Tabsheet_2 vise Subform_1 (og kun denne).

Når jeg vælger Option_2 på Tabsheet_1, skal Tabsheet_2 vise Subform_2 (og kun denne).

Der skal i begge tilfælde linkes:
IDnrMainform -> IDnrSubform_1
hhv
IDnrMainform -> IDnrSubform_2

De to subforms er forskellige i layout og indhold!

Hvordan ser VBA ud til dette
Avatar billede kabbak Professor
21. oktober 2003 - 21:27 #1
if Option_1 = true then
Subform_2.Visible = False
subform_1.Visible = true
end if
if Option_2 = true then
Subform_2.Visible =  true
subform_1.Visible = false
end if
Avatar billede mhq Nybegynder
21. oktober 2003 - 21:37 #2
Ok, måske jeg ikke havde formuleret mig helt korrekt. Det var meningen at Subform_1 skulle erstattes fuldstændigt af Subform_2 ved valg af Option_2
Avatar billede kabbak Professor
21. oktober 2003 - 21:52 #3
er det ikke nok at skjule den, så ser du jo kun en form
Avatar billede mhq Nybegynder
21. oktober 2003 - 21:53 #4
Indrømmet. Det faktiske udbytte vil være det samme. Men her handler det om brugervenlighed, og det vil virke mindre forvirrende hvis ikke subforms hopper rundt på billedet!
Avatar billede kabbak Professor
21. oktober 2003 - 21:59 #5
det skulle de heller ikke, den burde være skjult, når de vælger Option_1 eller 2 på Tabsheet_1, så ser de jo ikke på Tabsheet_2
21. oktober 2003 - 22:05 #6
Undskyld, at jeg spørger, men hvorfor bruger du ikke bare Access egen tabcontrol? Den kræver jo slet ikke noget kode!

Men uanset hvad, så er koden til at skifte indholdet i en subform denne:
Select Case true
  Case Me!Option_1
    Me!IDnrMainform.Sourceobject = "IDnrSubform_1"
  Case Me!Option_2
    Me!IDnrMainform.Sourceobject = "IDnrSubform_2"
end select

/Thomas
Avatar billede kabbak Professor
21. oktober 2003 - 22:16 #7
jeg har knapperne i en gruppebox

Private Sub GruppeOption_Click()
If GruppeOption = 1 Then
Me.Subform_2.Visible = True
Me.Subform_2.Visible = False
Else
Me.Subform_1.Visible = False
Me.Subform_2.Visible = True
End If
End Sub
Avatar billede mhq Nybegynder
22. oktober 2003 - 12:27 #8
thomasjepsen: Jeg anvender allerede faneblade. Det er subform på eet af disse jeg vil have skal ændre sig. Jeg har lavet en løsning, der kan anvendes: Begge forms saves på tabsheet. I forbindelse med valg af Option_1 eller Option_2 ændres den ene subform property til:
Visible = False
Height = 0
og den anden
Visible = True
Height = 3000

Det giver dne ønskede effekt
22. oktober 2003 - 12:31 #9
Hvorfor ikke skifte Sourceobject, som jeg foreslog?

Hvis du ikke ønsker at brugeren skal se 'flimmer' på skærmen, kan du bruge kommandoen Docmd.Echo False før dine andre handlinger. Husk bare at skrive Docmd.Echo True til sidst, da du ellers ikke kan få adgang til noget som helst.
22. oktober 2003 - 12:38 #10
Princippet med at have skjulte felter er aldrig god, hvis man kan undgå det. Dels er det ofte besværligt at markere og redigere de bagvedliggende objekter. Dels er det med til at sløve formularen voldsomt ned, da antallet af objekter på en formular er en væsentlig faktor til performance-nedsættelse. Især en subform sløver ned, da den jo indeholder en del kontrolelementer i sig selv samt en recordsource, som også er 'tung' at 'slæbe' rundt på.

FYI
/Thomas
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