Access: rapport apart laten open zonder formulier te sluiten

Status
Niet open voor verdere reacties.

Dencar77

Gebruiker
Lid geworden
15 mrt 2013
Berichten
131
Allereerst nog de beste wensen voor 2014.


Dag allen,

ik heb een database ontworpen waarbij ik gebruik maak van een Treeview-methode. In deze database heb ik de Rapporten methode van Noordenwind overgenomen en lichtelijke vertaling toegepast (dus geen aanpassing aan de VBA codering). Wanneer ik gebruik maak van de Rapporten formulier kan ik een voorbeeld (Preview) knop gebruiken om te kijken of het rapport wel het juiste rapport is. Dit rapport opent zich, maar hierbij sluit ik meteen het formulier Rapporten. Dit is dus niet de bedoeling.
Ik heb wat pogingen gewaagd om in VBA de codering aan te passen, maar ik krijg tot zover alleen maar foutmeldingen. Wie kan mij helpen om de VBA correct aan te passen zodat ik wanneer ik een rapport open (na keuzes gemaakt te hebben) deze in een nieuwe "formulier" open en het formulier Rapporten open blijft?

Code:
Option Compare Database
Option Explicit

'nog geen weekrapport toegevoegd. Anders zou deze beginnen met cijfer 1, dan maand cijfer 2, etc etc

Enum RapportPeriodeEnum
    ByMonth = 1
    ByQuarter = 2
    ByYear = 3
End Enum


Sub PrintRapporten(ReportView As AcView)
    ' Deze procedure wordt gebruikt in Preview_Click and Print_Click Sub procedures.
    ' Preview of print rapport geselecteerd in de "ReportToPrint option group".
    Dim strRapportNaam As String
    Dim strRapportFilter As String
    Dim lCrimeTelling As Long

    ' Bepaal de rapport filtering in de rapporten
    If Nz(Me.leRapportFilter) <> "" Then
        strRapportFilter = "([RapportGroepeerVeld] = """ & Me.leRapportFilter & """)"
    End If
    
    ' Bepaal rapport tijdschema
    Select Case Me.Ctl1eRapportPeriode
    Case ByYear
        strRapportNaam = "Jaarlijks rapport"
        lCrimeTelling = DCountWrapper("*", "QryRapportenAnalyse", "[Jaar]=" & Me.cbJaar)
    Case ByQuarter
        strRapportNaam = "Kwartaal rapport"
        lCrimeTelling = DCountWrapper("*", "QryRapportenAnalyse", "[Jaar]=" & Me.cbJaar & " AND [Kwartaal]=" & Me.cbKwartaal)
    Case ByMonth
        strRapportNaam = "Maandelijks rapport"
        lCrimeTelling = DCountWrapper("*", "QryRapportenAnalyse", "[Jaar]=" & Me.cbJaar & " AND [Maand]=" & Me.cbMaand)
    End Select
    ' DOEN! MsgBoxOKOnly NoSalesInPeriod opzoeken in tabel. Aanpassen naar bv Geen gegevens in periode
    If lCrimeTelling > 0 Then
        TempVars.Add "Groeperen op", Me.Ctl1eRapport.Value
        TempVars.Add "Weergeven", DLookupStringWrapper("[Weergeven]", "Rapporten", "[Groeperen op]='" & Nz(Me.Ctl1eRapport) & "'")
        TempVars.Add "Jaar", Me.cbJaar.Value
        TempVars.Add "Kwartaal", Me.cbKwartaal.Value
        TempVars.Add "Maand", Me.cbMaand.Value
        
        eh.TryToCloseObject
        DoCmd.OpenReport strRapportNaam, ReportView, , strRapportFilter, acWindowNormal
    Else
        MsgBoxOKOnly GeenGegevensInPeriode
    End If
End Sub


Private Sub Ctl1eRapport_AfterUpdate()
    InitFilterItems
End Sub


Private Sub Ctl1eRapportPeriode_AfterUpdate()
    BepaalRapportPeriode Me.Ctl1eRapportPeriode
End Sub


Private Sub Form_Load()
    BepaalRapportPeriode ByYear
    InitFilterItems
End Sub

'Toevoeging week: hier zou ik week moeten toevoegen.
Sub BepaalRapportPeriode(RapportPeriode As RapportPeriodeEnum)
    Me.Ctl1eRapportPeriode = RapportPeriode
    Me.cbKwartaal.Enabled = (RapportPeriode = ByQuarter)
    Me.cbMaand.Enabled = (RapportPeriode = ByMonth)
End Sub


Private Sub InitFilterItems()
    Me.leRapportFilter.RowSource = DLookupStringWrapper("[Filterrijbron]", "Rapporten", "[Groeperen op]='" & Nz(Me.Ctl1eRapport) & "'")
    Me.leRapportFilter = Null
End Sub


Private Sub cmdPreview_Click()
    PrintRapporten acViewReport
End Sub


Private Sub cmdPrint_Click()
   PrintRapporten acViewNormal
End Sub


Private Function datum() As Date
    datum = Nz(DMaxWrapper("[datum]", "Tbl_Invoer_Gegevens"), Date)
End Function
 
En alsof een appel op mijn hoofd gevallen is...ik heb vanuit de code de onderstaande zin weggelaten. Nu opent het voorbeeldrapport zich in een aparte venster.

eh.TryToCloseObject
 
Persoonlijk zou ik er voor kiezen om het formulier te verbergen, en bij het sluiten van het gekozen rapport weer zichtbaar te maken.
 
@Octafish: Is dat alleen gebruiksvriendelijker of ook beter voor de werking van de database? En is die aanpassing in de vermelde codering makkelijk aan te passen? Je zal het niet geloven als ik zeg dat ik meer dan 10 uur effectief heb lopen zoeken op internet en de daarbij behorende testen uitgevoerd heb om uiteindelijk het rapport in een aparte venster te laten verschijnen (preview versie).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan