03. september 2003 - 12:35Der er
9 kommentarer og 1 løsning
Opdatering af flere sammenkædede underformularer
Hej Jeg har en hovedformular, med 3 kommandoknapper, der hver åbner en sammenkædet underformular. Der skal flere kommandoknapper på senere.. Det virker faktisk fint, bortset fra en (irriterende) detalje. De to sidst lavede underformularer, åbnes korrekt. Men hvis jeg scroller videre til et andet firma på hovedformularen, ændres de tilhørende oplysninger ikke på underforlmularen. (Men som sagt ÅBNES de korrekt). Ved den første kommandoknap virker det fint(den blev lavet vha. guiden, det er den der hedder"skiftkæde")
Problemet (tror jeg) er at SUBén "FilterchildForm" er specifikt skrevet til underformularen "KontaktpersonTbl", og derfor ikke virker med kommandoknap 9 eller 23.
Er det noget med at bytte ud på "Private" SUBér eller hvad?
Eller kan man ændre i FilterChildForm+OpenChildForm fra "Forms![KontaktpersonTbl]" til "Forms![generisk-underformularnavn]" ?
Jeg vedlægger min kode her: På forhånd mange tak VH Tore
If Me.NewRecord Then Forms![KontaktpersonTbl].DataEntry = True Else Forms![KontaktpersonTbl].Filter = "[KundeId] = " & Me![KundeId] Forms![KontaktpersonTbl].FilterOn = True End If
End Sub Private Sub OpenChildForm()
DoCmd.OpenForm "KontaktpersonTbl" If Not Me![SkiftKæde] Then Me![SkiftKæde] = True
End Sub Private Sub CloseChildForm()
DoCmd.Close acForm, "KontaktpersonTbl" If Me![SkiftKæde] Then Me![SkiftKæde] = False
End Sub Private Function ChildFormIsOpen()
ChildFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "KontaktpersonTbl") And acObjStateOpen) <> False
End Function
Private Sub Kommandoknap9_Click() On Error GoTo Err_Kommandoknap9_Click
Dim stDocName As String Dim stLinkCriteria As String
Jeg har ikke set din kode nærmere igennem. Men kontroller at egenskaberne "Underordnede felter" og 2Overordnede felter2 er sat til det felt på formularerne, som angiver en unik værdi for kunden.
Hvis dette er gjort behøver du såmænd ikke så meget kode. Hvis ikke alle dine underformularer skal være synlige på samme tid, kan du angive egenskaben Synlig til Nej, og derefter med koden :
Me.Underformularens navn.Visible = True Me. en anden underformular.Visible = False
Det tror jeg ikke der er tale om her, men nærmere om sammenkædede formularer. En under formular er en formular, der ligger inde i en anden formular (Parent-Form). Denne underformular vil næsten altid "følges" med parent-form ved hjælp af underordnede- og overordnede felter.
Det jeg tror du har gang i er sammenkædede formularer, hvilket vil sige, at du åbner en anden formular i den samme unikke værdi som parent-form. Bemærk dit kriterie, som er sat ind ved child-form's åbning. Der bliver koden eksekveret og kun der. Du skal indsætte noget kodeværk ved OnCurrent, der får den sammenkædede formular til at søge efter den unikke værdi fra parent-form.
without looking closely at the code I guess you are right in you assumption that FilterChildForm is made for the KontaktpersonTbl form.
Use the first form as an example and make a copy of each SUB routine it uses. Then make a copy of these routines renaming them and altering the names of the forms they are using.
Form_Current need specail attention, it can be altered in a number of ways.
Sub Form_Current() On Error GoTo Form_Current_Err
If ChildFormIsOpen() Then FilterChildForm If ChildFormIsOpen1() Then FilterChildForm1 If ChildFormIsOpen2() Then FilterChildForm2
NOTE:THis is just an example, it will still need some work from you.
Synes godt om
Ny brugerNybegynder
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.