Avatar billede nih Novice
07. marts 2004 - 22:47 Der er 5 kommentarer og
1 løsning

Rapport on close event

Hej

Jeg har en rapport, som har en søgeform tilknyttet.
Jeg åbener formen i report_open
I formen laves diverse filtreringer af rapporten's data
Menningen er så at lukke formen i report_close, MEN  denne hændelse aktiveres hver gang jeg skifter filter på rapporten.

Er det en bug - mener ikke det var sådan i 97'eren jeg bruger 2003.

Jeg søger en løsning så jeg kan lukke min søgeform når rapporten lukkes og ikke hvergang der skiftes filter i rapporten

Niels
Avatar billede nih Novice
07. marts 2004 - 22:49 #1
Her er rapportens kode:
Option Compare Database
Option Explicit

Private Sub Report_Activate()
    DoCmd.Maximize
End Sub



Private Sub Report_Close()
    DoCmd.Close acForm, "frm_filterRpt_statestikBryder", acSaveNo
End Sub

Private Sub Report_NoData(Cancel As Integer)
    MsgBox "Der er ingen data for det valgte filter", vbInformation
End Sub

Private Sub Report_Open(Cancel As Integer)
    DoCmd.OpenForm "frm_filterRpt_statestikBryder"
End Sub

OG HER er formens kode:

Option Compare Database
Option Explicit

Private Sub btnOk_Click()
    Dim sWhere As String

    Dim rpt As Report
   
    Set rpt = Reports("Kopi af rpt_Point_Detaljer")
   
    If Me.comboBryder <> -1 Then
        sWhere = "bryderid = " & Me.comboBryder
    End If
   
    If Len(sWhere) > 1 And Me.comboSaeson <> -1 Then
        sWhere = sWhere & " AND "
    End If

    If Me.comboSaeson <> -1 Then
        sWhere = sWhere & "[sæson] = " & Me.comboSaeson
    End If

    rpt.filter = sWhere
    rpt.FilterOn = True
End Sub


Niels
07. marts 2004 - 23:09 #2
Hej Niels,

Det lyder mærkeligt!!?

En løsning kunne være at bruge timeren på formularen;
Hvis du f.eks. sætter timerinterval til 500 (=½ sekund) og lagde denne kode på vedTimerudløb:
If Currentproject.Allreports("Dinrapport").IsLoaded = False then Docmd.Close acform, Me.name

Du vil da kunne opleve en forsinkelse på op til ½ sekund, men det er vel ok.
I Princippet ville du kunne risikere at timerudløbet skete præcis samtidig med at brugeren lavede en filtrering. Men det ville du kunne undgå ved på rapportens OnLoad-hændelse at lægge denne kode:
DoCmd.OpenForm "frm_filterRpt_statestikBryder"
Forms!frm_filterRpt_statestikBryder.Timerinterval = 500

Jeg har ikke afprøvet eksemplet, men mener, at det burde holde.
Avatar billede nih Novice
07. marts 2004 - 23:17 #3
Ja - Lige nu har jeg en hændelse onActivate på min menu form der lukker formen hvis den er åben.
Jeg syntes bare det burde virke som jeg har beskrevet herover

Niels
Avatar billede hekla Nybegynder
07. marts 2004 - 23:28 #4
Du kan sætte en boolean ind som True før rpt.FilterOn = True, og sætte den til False ved Report_Activate, og så kun lukke formularen, hvis din boolean er false.
Avatar billede nih Novice
07. marts 2004 - 23:38 #5
Hej Hekla - Det virker fint :)

Private Sub Report_Activate()
    Form_frm_filterRpt_statestikBryder.Hekla = False
    DoCmd.Maximize
End Sub

Private Sub Report_Close()
    If Form_frm_filterRpt_statestikBryder.Hekla = False Then
        DoCmd.Close acForm, "frm_filterRpt_statestikBryder", acSaveNo
    End If
End Sub

og min form

Option Compare Database
Option Explicit
Public Hekla As Boolean

Private Sub btnOk_Click()
    Dim sWhere As String

    Dim rpt As Report
   
    Set rpt = Reports("Kopi af rpt_Point_Detaljer")
   
    If Me.comboBryder <> -1 Then
        sWhere = "bryderid = " & Me.comboBryder
    End If
   
    If Len(sWhere) > 1 And Me.comboSaeson <> -1 Then
        sWhere = sWhere & " AND "
    End If

    If Me.comboSaeson <> -1 Then
        sWhere = sWhere & "[sæson] = " & Me.comboSaeson
    End If
    x = True
    rpt.filter = sWhere
    rpt.FilterOn = True
End Sub
Avatar billede hekla Nybegynder
08. marts 2004 - 00:27 #6
takker for p og navnet i funktionen :o)
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