Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 11:17 Der er 14 kommentarer og
1 løsning

Udskiftning af subform

Jeg har en form, hvori der er en subform, der skifter data- og indholdskilde, alt afhængigt af hvilken knap der aktiveres på min form.
Me.SubformChange.SourceObject = "Ny form"

En bestemt subform (fortløbende) kan indeholde brugernavne og en knap "Se mere info" ud for hver bruger. Når man trykker på knappen skal subformen skiftes ud med en subform indeholdende den valgte brugers oplysninger.

Jeg får en Type Mismatch fejl (vinduet åbnes, men brugerens oplysninger findes ikke)
---------
Private Sub more_Click()
On Error GoTo Err_more_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "Brugeroplysninger"
   
    stLinkCriteria = "[BrugerNo]=" & Me![BrugerNo]
    Me.SubformChange.SourceObject = stDocName
    DoCmd.GoToRecord stDocName, , , stLinkCriteria
'Nedenstående virker, men åbner i et nyt vindue :o/   
'DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_more_Click:
    Exit Sub

Err_more_Click:
    MsgBox Err.Description
    Resume Exit_more_Click
   
End Sub
29. januar 2003 - 11:23 #1
Er din subforms "Link child field" og "Link Master field" (kan ikke huske hvad de hedder på dansk) ikke begge sat til: BrugerNo ?

Derved vil subformen jo automatisk filtrere på den pågældende BrugerNo.

Og derved burde det ikke være nødvendigt med: Me.SubformChange.SourceObject = stDocName
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 11:31 #2
Nej, de er desværre ikke Linked.
Hvis jeg forsøger, får jeg en fejl: "Can't link unbound fields".

Kan det skyldes at jeg rent faktisk har subforms i 2 niveauer?
På forsiden er der en stor subform, der skifter indhold (SubformChange).
Heri åbner en form indeholdende en anden subform!!
Jeg ved at det lyder lidt rodet, men det virker faktisk ret godt! (bortset fra når jeg skal lukke en subform og åbne en anden, visende specifik data!)

Kan det SLET ikke lade sig gøre på baggrund af ovenstående kode?
29. januar 2003 - 11:37 #3
jooo, det skulle da kunne lade sig gøre.
Jeg ville så nok bare bruge .Filter i stedet for .GotoRecord

Me!SubformChange.SourceObject = stDocName
Me!SubformChange.Form.Filter = stLinkCriteria
Me!SubformChange.Form.FilterOn = True

Jeg er dog stadig ikke helt sikker på hvordan din formular er bygget op og hvad detr er for Unbound fields, du har.
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 11:52 #4
Hmmm... Formen åbner uden problemer, men der vises ikke noget data.
Jeg fandt 1 fejl; stDocName er navnet på den tabel der skal ledes i, mens ...SourceObject = "Brugeroplysninger" - altså den form, der skal åbnes.

Er der ellers noget i vejen i mit stLinkCriteria?
29. januar 2003 - 11:54 #5
Hvis BrugerNo er et tesktfelt, skal der stå:
stLinkCriteria = "[BrugerNo]='" & Me![BrugerNo] & "'"
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 11:57 #6
BrugerNo er et autonummereringsfelt.
Men Me.[BrugerNo] er jo det brugernummer der hænger sammen med brugernavnet i den nuværende form, ik?
Mens "[BrugerNo]=" refererer til den tabel hvor sammenligningen skal foretages, ik? Hvor ved den fra hvilken tabel det er?
29. januar 2003 - 11:58 #7
Du kan forøvrigt ikke bruge docmd.Gotorecord på denne måde.
Den bruges kun til at gå til næste, forrige, første, sidste, ny post eller et vist antal poster frem eller tilbage.

I stedet kan du bruge docmd.FindRecord.
Men den kræver at du står i det felt, som du vil søge i. f.eks. sådan:
docmd.Gotocontrol "SubformChange"
docmdgotocontrol "BrugerNo"
docmd.Findrecord Me!BrugerNo
29. januar 2003 - 11:59 #8
rettelse:

docmd.Gotocontrol "SubformChange"
docmd.gotocontrol "BrugerNo"
docmd.Findrecord Me!BrugerNo
29. januar 2003 - 11:59 #9
Er BrugerNo ikke en del af tabellen/forespørgslen som danner basis for subformen?
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 12:09 #10
Jeg befinder mig i en subform ("brugerliste"), indeholdende et skjult felt "BrugerNo", et synligt felt "BrugerNavn" og en knap "Mere info".
Ved tryk på "Mere info" skal subformen "brugerliste" skiftes ud med en anden subform "brugeroplysninger" og her skal BrugerNo'et fra "brugerliste" findes i den nyåbnede form "brugeroplysninger".
Navnet på den subform der indeholder de skiftende subforms er "SubformChange".
Forvirret?

Når jeg udskifter "SubformChange" med "brugeroplysninger", får jeg beskeden: "The control brugeroplysninger cant be found".
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 12:11 #11
"Er BrugerNo ikke en del af tabellen/forespørgslen som danner basis for subformen?" -Du mener om den er på den 'øverste' form? Jo, det er den.
29. januar 2003 - 12:14 #12
Den skal jo også være med på 'nederste' form!
Avatar billede ugotabe_kidding Nybegynder
29. januar 2003 - 14:05 #13
Jeg må indrømme at min kode ikke er superoverskuelig længere :o/
Hvis jeg lagrer brugernavnet i et tekstfelt på 'øverste' form, håber jeg at jeg kan bruge følgende kode:
---
Private Sub Form_Open(Cancel As Integer)
Dim rs As Object 'Find a match

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[UserName] = '" & [Forms]![Startpage].[Text43] & "'"
    Me.Bookmark = rs.Bookmark
     
End Sub

Men jeg får fejl i sidste linie "....Bookmark...", med beskeden "Error 3021.. No current record".
Jeg bruger selvsamme kode i et lignende tilfælde uden problemer...
Avatar billede fynbohans Nybegynder
08. februar 2003 - 02:10 #14
Skrot underformularen og gør den til en almindelig formular.
Du bruger feltet med bruger som betingelse i den anden formular med:
Forms![Hovedformularens navn]![Feltnavn for bruger], idet jeg
går ud fra brugernavn er med i alle de brugte tabeller.
Avatar billede ugotabe_kidding Nybegynder
13. februar 2003 - 16:41 #15
Lukker.
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