13. september 2004 - 00:36Der 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.
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?
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:
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
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.
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.
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.