Avatar billede puppetmaster Nybegynder
26. marts 2002 - 14:19 Der er 24 kommentarer og
2 løsninger

Hovedformular med underformular

Når hovedformularen ændrer sig, skal underformularen også ændre sig. Det virker fint, så længe underformularen "ligger inde i" hovedformularen, men så snart den bliver "trukket ud" som en selvstændig formular, som så bliver aktiveret fra hovedformularen vha en knap, går det galt. Ved første metode, filtreres underformularen, men ved metode 2, hentes ALLE poster, uanset hvad der er valgt i hovedformularen! De "linker" altså ikke rigtigt, hvad kan der være galt? (og hvad er løsningen?)
26. marts 2002 - 14:27 #1
Øh, hvad er metode 1 og 2?
Åbner du formlaren med Docmd.Openform?
Avatar billede puppetmaster Nybegynder
26. marts 2002 - 14:34 #2
metode 1 er ligesom "Formular med underformular(er)", metode 2 er "Sammenkædede formularer"

Tror bare jeg smider underformularen ind i hovedformularen, gider ikke det bøvl mere.......
26. marts 2002 - 14:36 #3
okay, men HVORDAN sammenkæder du dem? Kan jeg se noget kode?
Avatar billede nih Novice
26. marts 2002 - 14:36 #4
Begrebet 'underformular' er en formular inde i en anden formular.

Hvis du åbner en 'underformular' selvstændigt - er det ikke en underformular mere, men en alm. formular. Dine linkede felter i hoved- og under- formular er ikke aktuelle mere.

Niels
Avatar billede puppetmaster Nybegynder
26. marts 2002 - 14:42 #5
Kan det være filterets format der er noget i vejen med?

Private Sub FilterChildForm()

    If Me.NewRecord Then
        Forms![Mammografi].DataEntry = True
    Else
        Forms![Mammografi].Filter = "[Screening_ID] = " & Me![Screening_ID] & " AND [CPR] = " & Me![CPR] & ""
        Forms![Mammografi].FilterOn = True
    End If

End Sub
Avatar billede terry Ekspert
26. marts 2002 - 14:42 #6
you have to use the open form with a where clause

DoCmd.OpenForm "Employees", , ,"LastName = 'King'"
Avatar billede terry Ekspert
26. marts 2002 - 14:45 #7
DoCmd.OpenForm "Mammogragi", , ,"CPR = " & Me.CPR
Avatar billede terry Ekspert
26. marts 2002 - 14:46 #8
where CPR is a field on the SUB form and Me.Cpr is a field on the main form
Avatar billede puppetmaster Nybegynder
26. marts 2002 - 14:47 #9
yes, but I have 2 fields that it depends on, CPR and Screening_ID
(2 tired to be messin' with this now.....)
Avatar billede terry Ekspert
26. marts 2002 - 14:58 #10
,"CPR = " & Me.CPR & " AND Field2 = " & Me.fld2
Avatar billede terry Ekspert
26. marts 2002 - 15:00 #11
,"CPR = " & Me.CPR & " AND Screening_ID = " & Me.Screening_ID

If your CPR number is text then

"CPR = '" & Me.CPR & "' AND Screening_ID = " & Me.Screening_ID
Avatar billede nih Novice
26. marts 2002 - 15:01 #12
i forespørgslen til din 'underformular' kan du angive kriterier fra din hovedform eks.: [Forms]![frmMain]![txtCpr]

I din 'underformular' skal du i onFocus event skrive: me.requery

Så virker 'underformularen' som en selvstændig formular.

Niels
26. marts 2002 - 15:02 #13
Hvis du stadig vil kunne bladres i din formular, kan du bruge recordsetclone i stedet for den løsning, som Terry forslår!
Avatar billede nih Novice
26. marts 2002 - 15:06 #14
øhh - Hvordan virker jeres opdateringer på dette spørgsmål ???

Det er først nu jeg ser alle de andre gode indlæg
Avatar billede terry Ekspert
26. marts 2002 - 15:07 #15
Or place a button on the sub form to toggle the filter on/off
26. marts 2002 - 15:09 #16
Terry-> Ja, men hvis du har 1.000 poster, så er det ikke sikkert at du er interesseret i at hoppe tilbage til post nr 1, når du fjerner filteret...:o)
Avatar billede terry Ekspert
26. marts 2002 - 15:13 #17
Actually I dont think that is what puppetmaster wnats to do, I THINK he is only wanting to see the records linked to the main form.

Can you explain that recordsetclone Thomas, not sure what your thinking of there.
26. marts 2002 - 15:32 #18
Terry, I have to get back on that one....I am on my way out right now.
26. marts 2002 - 19:43 #19
Hi again,

Here it is:

Public Function ÅbnDetaljer()
    Dim rs
    DoCmd.OpenForm "Mammografi"
    Set rs = Forms!Mammografi.RecordsetClone
    rs.FindFirst "Screening_ID= '" & Me!Screening_ID & "' And CPR = " & ME!CPR
    If Not rs.NoMatch Then
        Forms!Mammografi.Bookmark = rs.Bookmark
    Else
        MsgBox "Der er ingen poster, som passer til kriteriet!", vbCritical
        DoCmd.Close acForm, "Mammografi"
    End If
    rs.Close
End Function

This function can be called from a button og from the dblclick-event on the Continuous form/datasheet.
The strength in this code is, that you end up at the same record but you can still move to the other records.
This is the 'correct' way to syncronize two forms.

If you wonder why I declare rs without any datatype, it is because of the problems with ADO and DAO in Access 2000; Access uses DAO insite the forms (when not in a .adp).
This way I can use it in all versions of Access (even if you remove both ADO and DAO !!??)

/Thomas
Avatar billede terry Ekspert
26. marts 2002 - 19:52 #20
but using the Where parameter of the OpenForm also goes to the same record and the filter can be removed too giving access to all the other records.

But in the end I think its a matter of tase.
Avatar billede nih Novice
26. marts 2002 - 21:17 #21
Thomas -> Så er de vel ikke 'linket' sammen - subformen viser ikke de poster der søges efter i mainformen.

Hvis dit søgekriterie fra mainformen f.eks. giver 5 poster på subformen har du et problem, fordi posterne ikke nødvendigvis kommer efter hinanden (der selvfølgelig kan løses :o))

Niels
Avatar billede puppetmaster Nybegynder
27. marts 2002 - 09:33 #22
Mange tak for alle svarene......men ikke helt det jeg er ude efter.
Jeg har 3 tabeller, som skal blive til 3 formularer:
Patient
Screening
Mammografi

Disse 3 formularer skaber jeg ved at bruge guiden til at oprette "sammenkædede formularer", men det er kun på den "øverste" formular der er en knap til underformularen. Når man klikker på denne, åbnes underformularen Screening, som har mammografi "embedded".........det skal den ikke være........den skal åbne på samme måde som Screening gjorde.........men jeg synes ikke det virker med bare at sætte en knap på og så knytte et filter til..........der bliver ikke filtreret noget fra..........hvis jeg nu oprettede de 3 formularer først (som sammenkædede formularer)og dernæst gjorde det samme med Screening og Mammografi......der må da være noget der jeg kan bruge......?
Avatar billede puppetmaster Nybegynder
27. marts 2002 - 09:40 #23
TADA!!! Det VIRKER! (spørgsmålet er om det stadig virker om 2 minutter, når jeg har rodet lidt med det! ;))
27. marts 2002 - 12:31 #24
Puppetmaster-> you lost me here...sorry! "Guiden til at oprette sammenkædede formularer"? Aldrig hørt om den! Hvor finder du den henne?

Niels-> ja, hvis der er flere matchene poster, så har du ret. Jeg bruger det som regel i forbindelse med oversigtsbilleder, hvor man kun kan vise få kolonner. Ved dobbeltklik for brugeren så et nyt detaljerbillede med alle felter. Her er det praktisk. Men formentlig ikke i dette tilfælde. Jeg var ikke klar over at der var tale om en én-til-mange-relation.

Terry-> Som jeg skrev, så bliver du jo sat tilbage til første post idet du fjerner filteret. Det er uhensigtsmæssigt.
Avatar billede puppetmaster Nybegynder
27. marts 2002 - 13:00 #25
thomasjepsen-> Hvis du i databasen vælger "Opret en formular vha. en guide." under "Formularer", og opretter en formular baseret på f.eks. 2 eller flere tabeller, får du muligheden for at oprette formularerne som:
"Formular med underformular(er)"
eller
"Sammenkædede formularer"
Det var hvad jeg mente med "Guiden til at oprette sammenkædede formularer", nothing else....
Avatar billede nih Novice
27. marts 2002 - 13:09 #26
Den kendte jeg ikke.

Niels
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