26. april 2010 - 21:51 Der er 4 kommentarer og
1 løsning

Events der fyrer naar der klikkes paa en tab.

I en Access 2007 application der handler om personer har jeg i en formular Zoeken anbragt et antal knapper der hver isaer ved klik resulterer i at en rapport aabnes.  For eksempel er der paa formularen en listbox med navne paa aktivitetsgrupper, og efter valg af en eller flere grupper og tryk paa en "soeg grupper" knap aabnes rapporten rptGrupper med oplysninger om de personer der er tilmeldt de valgte grupper.  Ved klik paa Zoeken tabben kommer man tilbage til Zoeken og kan vaelge at aabne andre rapporter.

Jeg vil saa, efterhaanden som brugerne aabner nye rapporter, automatisk lukke de gamle rapporter saa der kun er en rapport aaben ad gangen.  Jeg har derfor lavet denne procedure:

Private Sub closereports()
    Do While Reports.Count > 0
        DoCmd.Close acReport, Reports(0).Name, acSaveNo
    Loop
End Sub

Foreloebig lukkes rapporterne ved at hver sub der aabner en rapport starter med et kald til closereports.  Og det virker fint.  Men jeg ville hellere at rapporterne lukkes allerede naar man klikker paa Zoeken tabben.  Til den ende har jeg en Sub Form_Current(), en Sub Form_GotFocus() og en Sub Form_Load() efter dette moenster:

Private Sub Form_Current()
    closereports
End Sub

men rapporterne lukkes ikke naar Zoeken aabnes, foerst naar en ny rapport dannes.

Hvis jeg derimod har Zoeken og en rapport aaben og jeg saa vaelger designmode for Zoeken og derefter gaar tilbage til formularmode saa lukkes rapporterne.

Ved nogen hvilken event (hvis der fyrer naar jeg klikker paa tabben Zoeken og som jeg kan bruge til at kalde closereports eller hvordan jeg ellers kan gribe det an?
Avatar billede terry Ekspert
27. april 2010 - 08:14 #1
I'll take a look at this question a little later Christian, off out very shortly.
27. april 2010 - 11:55 #2
Thanks - take your time.
Avatar billede terry Ekspert
27. april 2010 - 14:03 #3
Try using the Tab Controls on Change event. This fires when you change the active page (TAB). Then you can test which page is active

Me.TabControlNameGoesHere.Value

The first page is = 0
27. april 2010 - 21:05 #4
I did not get it with TabControls, but I understood that the gist was to use an event that fires when the active page changes.  So I searched further and found the event that in my dutch-language system is called Form_Activate.  And it works.  With the code:

Private Sub Form_Activate()
    closereports
End Sub

the reports and forms that were opened from the form Zoeken are closed when I click on the Zoeken tab in order to return to that formular.  So I have now deleted all the closereports instructions in the individual subs.

So I had further work to do on my own, but it succeeded thanks to the inspiration from your response.  Thanks again.

(I saw your #1 around 0900 and said "take your time," but Experten seemed to swallow the comment so when around noon I did not see it I sent it again, hoping that it would not duplicate.)
Avatar billede terry Ekspert
28. april 2010 - 08:56 #5
Hi Christian
Maybe I misunderstood the original question?

"Events der fyrer naar der klikkes paa en tab"


As far as I can make out,  Form_Activate is an event which occurs on the form not on the tab control. 

There should be an event which fires when the active tab changes although if you click on the same tab then its not going to fire.

Anyway that isnt import. If you got something working then great.

and thanks for the points.
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