Rapport filteren

Status
Niet open voor verdere reacties.

goedlichtJoost

Gebruiker
Lid geworden
7 mrt 2012
Berichten
477
Hallo allemaal,

Ik ben aan het stoeien met de rapporten in acces.
Ik zou graag een rapport uit willen draaien van mijn actie tabel.

Nu kom ik op drie moeilijkheden:

1. ik zou graag een pop-up rapport willen zien, met hier dan de keuze om te printen. ik weet alleen hoe ik direct kan printen, of het rapport openen in acces niet als pop-up.
2. ik zou graag wanneer ik op mijn knop klik om het rapport te weergeven, hierna een invoer hebben voor een filter(DATUM) dus bijvoorbeeld enkel vandaag, deze week, deze maand, alles.
3. Ik zou ook graag alle oude acties waarbij de datum in het verleden ligt, kleiner is dan de datum van vandaag. niet meer op mijn rapport laten zien.

Mijn tabel is als volgt opgebouwd:

primaire sleutel = ID
Klantnummer
Datum
Actiekeuze
Notitie

Kan iemand mij hier mee helpen?

Mvg
Joost
 
ad 1) Een rapport heeft, net als een formulier, de eigenschap <Pop-up>. Die kun je op Ja zetten. Een pop-up rapport dat vraagt wat je wilt, bestaat niet. Wèl kun je een formulier koppelen aan het openen van het rapport dat die vraagstelling voor je regelt. Afhankelijk van de keuze wordt het rapport dan in een bepaalde status geopend.
ad 2) Je denkt verkeerd om: eerst geef je op een formulier aan wat je wilt zien, vervolgens wordt het rapport geopend met de selectie. Ik zou 1 en 2 uiteraard combineren.
ad 3) Is dat niet hetzelfde als vraag 2? Het datum filter derhalve correct instellen?
 
Hallo Octafish,

Oke dan zou ik graag een pop-up formulier maken die verschijnt na het drukken op een knop.
Hoe kan ik dit maken? En hoe zit dit dan met de filter, invullen van het filter. Gebeurt dit dan op het formulier met de knop, of met het formulier met de preview van het rapport.

Ik denk dat ik hier echt iets meer hulp bij behoef.

Mvg
Joost

Ps, nu ik het rapport op pop-up heb gezet, voldoet dit al eigenlijk.. je kunt nu gewoon met Ctrl+P printen. ik zou dan alleen het filter willen maken en aan kunnen passen
 
Laatst bewerkt:
In hoofdstuk 13 van de cursus is exact dit onderdeel behandeld, dus lees dat er eens op na, zou ik zeggen! In de draad die bij de cursus hoort (bovenin het forum) staat de bijbehorende database.
 
Hallo Octafish,

Ik zit nog met 1 probleem. Ik heb nu een formulier met hierop twee textvelden voor een datum. Dit met behulp van de datumkiezen rechts door notatie op datum kort in te stellen.
In mijn tabel van het rapport heb ik een waarde datum waarop gesorteerd moet worden.

Nu heb ik al veel verschillende notatie methodes geprobeerd, en op internet rondgezocht, maar het lukt me niet om te laten werken.

Ik gebruik de volgende code bij de knop:

Code:
Private Sub Maak_Actielijst_knop_Click()
DoCmd.OpenReport "Actie_Lijst", acViewReport, , Me.Begindatum.Value <= Datum <= Me.Einddatum.Value
End Sub

Kun jij mij vertellen hoe ik het moet opschrijven zodat dit wel werkt?

mvg
Joost
 
Datumnotaties hebben niks te maken met wat je opslaat; een datum is namelijk altijd een getal. Dus uiteindelijk filter je altijd op basis van getallen. Jouw formule is fout, en daarom filtert hij niet. Bovendien heb je het probleem dat je waarschijnlijk Nederlandse datums invoert, en dat VBA met Amerikaanse datums werkt. Een datum als 11-9-2012 heeft dan een dubbele betekenis; behalve 11 september kan je hem ook lezen als 9 november. Om dat voor te zijn, moet je dus een hele andere werkwijze gebruiken.

Code:
Private Sub Maak_Actielijst_knop_Click()
'On Error GoTo Err_Handler      'Remove the single quote from start of this line once you have it working.
'Documentation: http://allenbrowne.com/casu-08.html
'Note:          Filter uses "less than the next day" in case the field has a time component.
Dim strReport As String
Dim strDateField As String
Dim strWhere As String
Dim lngView As Long
Const strcJetDate = "\#mm\/dd\/yyyy\#"  'Do NOT change it to match your local settings.
    
    'DO set the values in the next 3 lines.
    strReport = "Actie_Lijst"      'Put your report name in these quotes.
    strDateField = "[Datum]" 'Put your field name in the square brackets in these quotes.
    lngView = acViewPreview     'Use acViewNormal to print instead of preview.
    'Build the filter string.
    If IsDate(Me.Begindatum) Then
        strWhere = "(" & strDateField & " >= " & format(Me.Begindatum, strcJetDate) & ")"
    End If
    If IsDate(Me.Einddatum) Then
        If strWhere <> vbNullString Then
            strWhere = strWhere & " AND "
        End If
        strWhere = strWhere & "(" & strDateField & " < " & format(Me.Einddatum + 1, strcJetDate) & ")"
    End If
    
    'Close the report if already open: otherwise it won't filter properly.
    If CurrentProject.AllReports(strReport).IsLoaded Then
        DoCmd.Close acReport, strReport
    End If
    
    'Open the report.
    'Debug.Print strWhere        'Remove the single quote from the start of this line for debugging purposes.
    DoCmd.OpenReport strReport, lngView, , strWhere

Exit_Handler:
    Exit Sub

Err_Handler:
    If Err.Number <> 2501 Then
        MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "Cannot open report"
    End If
    Resume Exit_Handler

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan