bij produceren rapport een (datum)criteria meegeven als filter

Status
Niet open voor verdere reacties.
Heb dit 'draadje' niet gevolgd, alleen even gekeken naar de gebruikte code, met de constatering van niet juiste haakjes.
Dus verder laat ik het aan anderen over!
 
Deze melding betekent dat je veldnaam niet goed is. Of je veld heet anders, of het veld zit niet in de query die je gebruikt.
 
Korte vraag nog even hierover.

Hoe kan ik de code iets aanpassen, zodat als ik nu alleen een datum invul en geen project kies, het rapport alleen de data range laat zien met alle projecten. (zoals het eerst werkte, dit komt namelijk voor)
 
Is dit mogelijk wat ik wil?

Dus ik vul nu voor het rapport twee data in: start en einddatum en ik kies een "project" als ik nu geen project kies krijg ik een foutmelding. Kan ik de code zo aanpassen dat het er niet op "project"wordt gefilterd?
 
Tuurlijk kan dat; zet eerst de huidige code hier neer, want de vorige deed het niet goed; dan kunnen we die aanpassen.
 
Dit is de code:

Code:
Private Sub cmdPreview_Click()
'On Error GoTo Err_Handler      'Remove the single quote from start of this line once you have it working.
    'Purpose:       Filter a report to a date range.
    '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 = "Uren rapport"      'Put your report name in these quotes. kun je aangeven welk raport?
    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.txtStartDate) Then
        strWhere = strDateField & " >= " & Format(Me.txtStartDate, strcJetDate)
    End If
    If IsDate(Me.txtEndDate) Then
        If strWhere <> vbNullString Then
            strWhere = strWhere & " AND "
        End If
        strWhere = strWhere & strDateField & " < " & Format(Me.txtEndDate + 1, strcJetDate)
        End If
        strWhere = strWhere & " AND Project = " & Me.txtProjectName.Value
    
    
        '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
    DoCmd.Close acForm, Me.Name

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
 
... en dit is het antwoord.
Code:
    If Not Me.txtProjectName.Value = "" Then
        strWhere = strWhere & " AND Project = " & Me.txtProjectName.Value
    End If
 
Super bedankt!

off topic; Kun je mij een boek o.i.d. adviseren over he gebruik van visual basic in access. Ik heb in het verleden wel eens iets gedaan met Visual Basic zelf, echter ben ik het toch wel volledig kwijt heb ik in de gaten :rolleyes:
 
Ik heb zelf te weinig boeken gelezen om iets te kunnen aanbevelen. Ik heb zo'n idee dat de boekenmarkt zich redelijk heeft uitgekristalliseerd; alle slechte boeken zijn al lang van de markt, dus wat er nu is, kun je probleemloos aanschaffen.
Als ik zelf een boek koop, laat ik mij meestal leiden door de inhoud, en opmaak van een boek. Oftewel: sluiten de onderwerpen aan bij hetgeen ik wil leren, en leest het boek prettig? Verder koop ik meestal boeken van net-verlopen versies, omdat het niveau waarop de onderwerpen behandeld worden meestal algemeen genoeg is voor oudere versies, en er, zeker als het VBA betreft, toch niet zo specifiek op versie-specifieke onderdelen wordt ingegaan. En je spaart, als je de boeken op een boekenbeurs koopt, ook een hoop geld uit! Zo verwacht ik dat de 2007 boeken nu behoorlijk betaalbaar zullen worden, nu versie 2010 in de winkel ligt. En die twee versies liggen niet zo heel ver uit elkaar.
 
bedankt voor jullie reacties, ik ga er even mee aan de slag.
 
Hoi Raymin,

Hoewel een maand later: wat een geweldige code. Bedankt! Ik had zoveel moeite met het vinden van een goede datum code. K*t access kan niet met datum velden overweg.... Zelf bedacht, of slim gejat? ;) Maakt niet uit. Ik 'gebruik' je code nu ook.

Thanx alot!

MvG

Engel

Dit is de code:

Code:
Private Sub cmdPreview_Click()
'On Error GoTo Err_Handler      'Remove the single quote from start of this line once you have it working.
    'Purpose:       Filter a report to a date range.
    '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 = "Uren rapport"      'Put your report name in these quotes. kun je aangeven welk raport?
    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.txtStartDate) Then
        strWhere = strDateField & " >= " & Format(Me.txtStartDate, strcJetDate)
    End If
    If IsDate(Me.txtEndDate) Then
        If strWhere <> vbNullString Then
            strWhere = strWhere & " AND "
        End If
        strWhere = strWhere & strDateField & " < " & Format(Me.txtEndDate + 1, strcJetDate)
        End If
        strWhere = strWhere & " AND Project = " & Me.txtProjectName.Value
    
    
        '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
    DoCmd.Close acForm, Me.Name

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
 
Hoi Engel,

Geloof me ik kan ook alle hulp gebruiken die ik vinden kan met access. (ik ben er wel lekker enthousiast van geworden)

Dus in dit geval, beter goed gejat dan slecht bedacht ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan