Avatar billede brunhoj Nybegynder
13. september 2004 - 00:36 Der er 4 kommentarer og
1 løsning

Lagring af reference til kontrolelement på subform

Jeg har antal forskellige forms hver med deres subform. I hver af disse subforms er en combo, der har identisk rækkekilde (men ikke kontrolelementkilde). Hvis den ønskede værdi på comboen ikke findes i rækkekilden skal man på en knap åbne en PopUp -form og indtaste relevant info.

Når jeg trykker på knappen skal combo’ens placering gennem, således at når PopUp-formen lukkes, så opdateres comboen med den netop indtastede værdi. Dette volder mig problemer når comboen befinder sig i en (fortløbende) subform.

Min kode er flg.:

Private Sub cmdAktivitet_Click()

Call EconAktivitetOpen("[formularnavn]", [kontrolelementnavn]"

End Sub

Public Sub EconAktivitetOpen(strFormNavn As String, strControl As String)
   
    DoCmd.OpenForm "frmEconComAktivitetList"
    With Form_frmEconComAktivitetList
        .fldTekst = "<Opret ny aktivitet>"
        .txtControl = strControl
        .txtStrFormNavn = strFormNavn
    End With
   
End Sub

txtControl og txtStrFormNavn er ubundne tesktfelter på frmEconComAktivitetList. Disse bruges til at lagre formnavn og kontrolelementnavn.

Når der er indtastet værdier i frmEconComAktivitetList og der trykkes på Luk sker flg:

Private Sub cmdSaveClose_Click()

If Not IsNull(Me!fldEconComAktivitetID) Then
    Forms(txtStrFormNavn).Controls(txtControl).Value = Me!fldEconComAktivitetID
End If

DoCmd.Close
   
End Sub

Jeg har prøvet at indsætte diverse paramentre svarende til strFormNavn og strControl f.eks.:
strFormNavn: frmEconBevilling , frmEconBevilling!frmSub.Form etc.
strControl: cboEconComAktivitet , frmSub!Form.cboEconComAktivitet
Uanset hvad indsættes er der altid problemer med at referere til subformen.
Hvordan ved Access i øvrigt hvilken combo den skal opdatere, når subformen er fortløbende?

Venlig hilsen
Christian
13. september 2004 - 09:04 #1
Hej Christian,

Jeg er ikke helt sikker på, at jeg kan gennemskue helt, hvad du gør og hvad alle objekterne hedder.

Men når du har med fortløbende formularer at gøre, så vil alle kombobokse i princippet være identiske (på nær værdien, som hentes fra kontrolelementkilden). Dvs at hvis du ændre farve på én komboboks, vil de alle skifte farve. Derfor behøver du bare at opdatere én komboboks, hvorved alle de andre også er opdateret.
Du opdaterer komboboksens rækkekilde vha metoden Requery og syntaksen for at 'ramme' komboboksen på subformen kan være således:

Forms(Me!txtStrFormNavn)![Subform](Me!txtControl).Requery

Hvis koden kaldes fra hovedformularen, kan sætningen forkortes til:
Me(Me!txtControl)![DinKomboboks].Requery

Når rækkekilden er opdateret, skal du så sætte værdien til den valgte værdi:
Forms(Me!txtStrFormNavn)![Subform](Me!txtControl) = Me!fldEconComAktivitetID


/Thomas
Avatar billede brunhoj Nybegynder
15. september 2004 - 19:03 #2
Kære Thomas

Først tak for dit svar. Jeg har forsøgt at implementere det, men uden positivt resultat. I øvrigt kan jeg ikke forstå, hvorfor der skal angives Me! ved Me!txtStrFormNavn og Me!txtControl.
Måske var min angivelse af problemet upræcis, så jeg skal prøve igen.

Jeg har et antal formularer frmA, frmB, frmC etc. der hver især har en subform tilknyttet: frmASub, frmBSub, frmCSub. På hver af disse fortløbende subs er der en kombobox med identisk rækkekilde og en tilhørende knap, der skal bruges til at kunne tilføre en ny værdi i komboboxen.

Ved tryk på knappen på f.eks. frmASub aktiveres en Public Sub, der har parametrene strFormNavn og strControl, der hver især skal angive navn på hhv. formular og kontrolelement i frmASub. Denne Public Sub åbner en PopUp formular, og lagrer strFormNavn og strControl på PopUp-formen som ubundne (og usynelige) tekstfelter navngivet hhv. txtFormNavn og txtControl.

Når PopUp-formen lukkes vha. en knap skal følgende gerne ske:
Komboboxen i frmSubA skal opdateres med den netop indtastede værdi fra frmPopUp. ”Stien” til kombo’en i frmSubA skulle ligge i PopUp-formens tekstboxe kaldet txtFormNavn og txtControl.

Hvis det ikke er muligt at opdatere selve kombo’en kontrolelementkilde pga. at frmSubA er fortløbende, så skal det i det mindste være muligt at opdatere rækkekilden på kombo’en i frmSubA.

Jeg håber meget, at en løsning er i sigte.

Venligst
Christian
18. september 2004 - 00:40 #3
Hej Christian,

Når popup'en har været åbnet, så er der vel blevet oprettet en post i tabellen, som komboboksens rækkekilde er baseret på?

Dvs at hvis du lukkede formularen og åbnede den igen, så ville det nye element være med på komboboksens list? Er det korrekt?

Derfor er hele opgaven bare at få opdateret komboboksen, hvilket gøres med metoden .Requery.

Men det er lidt svært at beskrive, da det er en 'smal' sti, man skal bevæge sig ned af. Der er mange fejlmuligheder, som det er svært at beskrive, når man ikke har databasen foran sig.
Hvis du har mulighed for at maile databasen til mig (eller trække de relevante formularer og tabeller ud i en ny database), så skal jeg kigge på den.
Hvis du sender den, så beskriv venligst hvilke formularer, der er tale om.

Du finder min mailadresse ved at klikke på mit navn, her til venstre.

/Thomas
28. september 2004 - 21:22 #4
Fandt den :o)
29. september 2004 - 14:38 #5
Takker :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
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