Rapport tonen: Datum van, Datum tot!

Status
Niet open voor verdere reacties.

Marcotica

Gebruiker
Lid geworden
20 sep 2007
Berichten
83
Hallo,

Ik ben bezig om een rapport te maken met die moet voldoen aan bepaalde opgave vooraf. In dit geval moet het rapport openen van uitsluitend de datums die je vooraf invoerd. Dus alles dan tonen Van datum - Tot datum
Ik krijg het helaas niet voor elkeer dat het rapport uitsluitend de gegevens toont die aan die datums voldoet.
Het lukt me dus niet om iets te verzinnen dat de datums "between" DatumVanaf en DatumTot wordt getoond.
Hier onder het script zoals het nu is:

Code:
Private Sub KnopVerslagMinderMeldingen_Click()
On Error GoTo Err_KnopVerslagMinderMeldingen_Click

    Dim stDocName As String
    Dim myEBVB As String
    Dim myDatumVanaf As Date
    Dim myDatumTot As Date
    
    myEBVB = InputBox("Eigenbedrijf of volmachtbedrijf" & vbCr & vbCr & "- Type 1 voor Eigenbedrijf" & vbCr & "- Type 2 voor Volmachtbedrijf", "EB of VB")
[B]    myDatumVanaf = InputBox("Vanaf welke datum wil je de rapportage bekijken?", "Datum vanaf")
    myDatumTot = InputBox("Tot welke datum wil je de rapportage bekijken?", "Datum tot")[/B]
    
    stDocName = "Rpt_Qry_Rapport_VerslagleggingNaselectieMinderMeldingeEB"
    DoCmd.OpenReport stDocName, acPreview, , "[Verz_kanaal_EBVB] Like '" & myEBVB & "'"
    [B]DoCmd.OpenReport stDocName, acPreview, , "[Maatregel_Datum] >= '" & myDatumVanaf & "<= & myDatumTot)'"[/B]

Exit_KnopVerslagMinderMeldingen_Click:
    Exit Sub

Err_KnopVerslagMinderMeldingen_Click:
    MsgBox Err.Description
    Resume Exit_KnopVerslagMinderMeldingen_Click
    
End Sub

Wie kan mij assisteren! Alvast bedankt voor het.


Mvg

Marco van Dijk
 
Om te beginnen is je Datumfilter niet goed.
DoCmd.OpenReport stDocName, acPreview, , "[Maatregel_Datum] >= '" & myDatumVanaf & "<= & myDatumTot)'"
Er zitten twee fouten in: de grootste is, dat je de datum als Tekst behandelt. Tekstquootjes gebruik je uiteraard alleen als je een Tekstfilter maakt. Een datum duidt je aan met #.
De tweede fout is, dat de vergelijking zelf niet deugt. >= en <= kan je niet in één regel combineren. Je moet per vergelijking het veld aangeven. Het filter zou er dus zo uit moeten zien:
"([Maatregel_Datum] >= #" & myDatumVanaf & "# AND [Maatregel_Datum]<=#" & myDatumTot & "#)"

Mooier nog is het als je de datums omrekent naar een getal, en in de filtering weer omzet naar een datum. Hiermee voorkom je dat 8-6 en 6-8 worden omgewisseld i.v.m. amerikaanse datumnotatie in SQL. De procedure zou er dan zo komen uit te zien:

Code:
Private Sub KnopVerslagMinderMeldingen_Click()
On Error GoTo Err_KnopVerslagMinderMeldingen_Click
Dim stDocName As String
Dim myEBVB As String
Dim myDatumVanaf As Date
Dim myDatumTot As Date
Dim sDatumFilter As String
    myEBVB = InputBox("Eigenbedrijf of volmachtbedrijf" & vbCrLf & vbCrLf & "- Type 1 voor Eigenbedrijf" _
        & vbCrLf & "- Type 2 voor Volmachtbedrijf", "EB of VB")
BeginDatum:
    myDatumVanaf = InputBox("Vanaf welke datum wil je de rapportage bekijken?", "Datum vanaf")
    If Not IsDate(myDatumVanaf) Then GoTo BeginDatum
EindDatum:
    myDatumTot = InputBox("Tot welke datum wil je de rapportage bekijken?", "Datum tot")
    If Not IsDate(myDatumTot) Then GoTo EindDatum
myDatumVanaf = CDate(myDatumVanaf)
myDatumTot = CDate(myDatumTot)
sDatumFilter = "[Maatregel_Datum] BETWEEN CDate(" & CDbl(myDatumVanaf) & ") AND CDate (" & CDbl(myDatumTot) & ")"
    stDocName = "Rpt_Qry_Rapport_VerslagleggingNaselectieMinderMeldingeEB"
    DoCmd.OpenReport stDocName, acPreview, , "[Verz_kanaal_EBVB] Like '" & myEBVB & "'"
    DoCmd.OpenReport stDocName, acPreview, , sDatumFilter
Exit_KnopVerslagMinderMeldingen_Click:
    Exit Sub
Err_KnopVerslagMinderMeldingen_Click:
    MsgBox Err.Description
    Resume Exit_KnopVerslagMinderMeldingen_Click
    
End Sub
 
Hoi Octo,
Super sneller reactie. Ik was niet bekend met de "#". Goede tip.
Ik heb jouw regel overgenomen:"([Maatregel_Datum] >= #" & myDatumVanaf & "# AND [Maatregel_Datum]<=#" & myDatumTot & "#)"
Echter het beoogde resultaat werd niet gegeven. Ik heb het nu zo staan:
Code:
Private Sub KnopVerslagMinderMeldingen_Click()
On Error GoTo Err_KnopVerslagMinderMeldingen_Click

    Dim stDocName As String
    Dim myEBVB As String
    Dim myDatumVanaf As Date
    Dim myDatumTot As Date

    myEBVB = InputBox("Eigenbedrijf of volmachtbedrijf" & vbCr & vbCr & "- Type 1 voor Eigenbedrijf" & vbCr & "- Type 2 voor Volmachtbedrijf", "EB of VB")
    myDatumVanaf = InputBox("Vanaf welke datum wil je de rapportage bekijken?", "Datum vanaf")
    myDatumTot = InputBox("Tot welke datum wil je de rapportage bekijken?", "Datum tot")

    stDocName = "Rpt_Qry_Rapport_VerslagleggingNaselectieMinderMeldingeEB"
    DoCmd.OpenReport stDocName, acPreview, , "[Verz_kanaal_EBVB] Like '" & myEBVB & "'"
    DoCmd.OpenReport stDocName, acPreview, , "([Maatregel_Datum] >= #" & myDatumVanaf & "# AND [Maatregel_Datum]<=#" & myDatumTot & "#)"

Exit_KnopVerslagMinderMeldingen_Click:
    Exit Sub

Err_KnopVerslagMinderMeldingen_Click:
    MsgBox Err.Description
    Resume Exit_KnopVerslagMinderMeldingen_Click

End Sub

Wat doe ik fout. Hij loopt mooi door, maar toch worden niet de de juiste data getoond. Hij toond ook de datums voor en na die ingevulde periode.

ps:
Wat je als 'mooier' hebt doorgegeven zal ik in duiken. Zie er redelijk begrijpelijk uit. (just a beginner here).

Om te beginnen is je Datumfilter niet goed.
DoCmd.OpenReport stDocName, acPreview, , "[Maatregel_Datum] >= '" & myDatumVanaf & "<= & myDatumTot)'"
Er zitten twee fouten in: de grootste is, dat je de datum als Tekst behandelt. Tekstquootjes gebruik je uiteraard alleen als je een Tekstfilter maakt. Een datum duidt je aan met #.
De tweede fout is, dat de vergelijking zelf niet deugt. >= en <= kan je niet in één regel combineren. Je moet per vergelijking het veld aangeven. Het filter zou er dus zo uit moeten zien:
"([Maatregel_Datum] >= #" & myDatumVanaf & "# AND [Maatregel_Datum]<=#" & myDatumTot & "#)"

Mooier nog is het als je de datums omrekent naar een getal, en in de filtering weer omzet naar een datum. Hiermee voorkom je dat 8-6 en 6-8 worden omgewisseld i.v.m. amerikaanse datumnotatie in SQL. De procedure zou er dan zo komen uit te zien:

Code:
Private Sub KnopVerslagMinderMeldingen_Click()
On Error GoTo Err_KnopVerslagMinderMeldingen_Click
Dim stDocName As String
Dim myEBVB As String
Dim myDatumVanaf As Date
Dim myDatumTot As Date
Dim sDatumFilter As String
    myEBVB = InputBox("Eigenbedrijf of volmachtbedrijf" & vbCrLf & vbCrLf & "- Type 1 voor Eigenbedrijf" _
        & vbCrLf & "- Type 2 voor Volmachtbedrijf", "EB of VB")
BeginDatum:
    myDatumVanaf = InputBox("Vanaf welke datum wil je de rapportage bekijken?", "Datum vanaf")
    If Not IsDate(myDatumVanaf) Then GoTo BeginDatum
EindDatum:
    myDatumTot = InputBox("Tot welke datum wil je de rapportage bekijken?", "Datum tot")
    If Not IsDate(myDatumTot) Then GoTo EindDatum
myDatumVanaf = CDate(myDatumVanaf)
myDatumTot = CDate(myDatumTot)
sDatumFilter = "[Maatregel_Datum] BETWEEN CDate(" & CDbl(myDatumVanaf) & ") AND CDate (" & CDbl(myDatumTot) & ")"
    stDocName = "Rpt_Qry_Rapport_VerslagleggingNaselectieMinderMeldingeEB"
    DoCmd.OpenReport stDocName, acPreview, , "[Verz_kanaal_EBVB] Like '" & myEBVB & "'"
    DoCmd.OpenReport stDocName, acPreview, , sDatumFilter
Exit_KnopVerslagMinderMeldingen_Click:
    Exit Sub
Err_KnopVerslagMinderMeldingen_Click:
    MsgBox Err.Description
    Resume Exit_KnopVerslagMinderMeldingen_Click
    
End Sub
 
Probeer 'm eens zo:

Code:
DoCmd.OpenReport stDocName, acPreview, , "([Maatregel_Datum] BETWEEN #" & myDatumVanaf & "# AND #" & myDatumTot & "#)"
 
Hoi Octa,

Wederom bedankt voor je reactie. Ik weet het zeker dat het bij jouw database het wel zal werken, maar helaas gaat het bij nu niet op.
Ik zal er later nog eens naar kijken.
Ik heb het nu opgelost door naast het script in de Query (deze speciaal voor het rapport gemaakt) de volgende criteria bij "Maatregel_datum" in te voeren:
>=[Vanaf welke datum (dd-mm-jjjj)] And <=[Tot welke datum (dd-mm-jjjj)]

Op zich niet de mooiste oplossing, maar wel effectief. :o

Nogmaals bedankt voor het meedenken en wellicht tot horens.

mvg

Marco

Probeer 'm eens zo:

Code:
DoCmd.OpenReport stDocName, acPreview, , "([Maatregel_Datum] BETWEEN #" & myDatumVanaf & "# AND #" & myDatumTot & "#)"
 
Het kan ook wel iets mooier in een query:
Als je via <Quiery>, <Paramaters> twee Datum/Tijd parameters maakt (in het voorbeeld: [BeginDatum] en [EindDatum] en je maakt een criterium Between [BeginDatum] And [EindDatum] kun je voor een selectie volstaan met (bijvoorbeeld) 1-8 en 7-8 als je de periode tussen 1-8-2010 en 7-8-2010 wilt zien.
In SQL ziet het er zo uit:

Code:
PARAMETERS BeginDatum DateTime, EindDatum DateTime;
WHERE (calldate Between [BeginDatum] And [EindDatum]);
Is dus net iets beter geregeld...
Overigens kan ik mij wel enigszins voorstellen dat de code (nog) niet goed werkt, want ik deed 'm ongeveer uit het hoofd; ik kon zo snel geen voorbeeld van een rapport vinden. Dus ik probeer 'm nog wel correct te krijgen...
 
De code van Allen Browne heb ik wel eens getest, en die werkt prima! I.p.v. de hele code te plakken, hier de Link.
 
Helemaal super.
Moest wel even goed zoeken wat betreft de parameters. Ook voor het eerst gezien nu. Werkt uitmuntend nu.
Bedankt Octa.!! :thumb:

De code van Allen Browne heb ik wel eens getest, en die werkt prima! I.p.v. de hele code te plakken, hier de Link.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan