Filteren op datums

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Ik heb een raar probleem in Access. Op een formulier staat een keuzelijst met datums (bron is een tabel). Er moet gefilterd worden op de gekozen datum.
Als je dan zonder kunstgrepen wil filteren op een datum worden dag en maand omgedraaid en krijg je de resultaten voor 1/2 ipv 2/1 (knop probleem)

Ik wou dat oplossen door de waarde van de combobox om te zetten naar een getal met de clng functie.
Code:
DateAsNumber = CLng(cbo_Date.Value)
(knop Solution)
Dit werkt de eerste keer dat je de filter toepast. Het type van het combobox resultaat wordt geïnterpreteerd als "date" (code bij cbo_Date_AfterUpdate())

Maar eens een filter één keer toegepast werd, wordt het type van het combobox resultaat plots als een "string" geïnterpreteerd, en dan werkt de filter alleen met deze waarde: DateAsNumber = CLng(CDate(cbo_Date.Value)), zonder die Cdate erbij krijg je een type mismatch

Ik begrijp niet wat hier gaande is :eek:

Klopt het dat je hier geen Access bestand kunt uploaden? Ik heb dan maar de extensie naar docx gewijzigd,weet niet of dat werkt...



Code:
Private Sub cbo_Date_AfterUpdate()
MsgBox TypeName(ActiveControl.Value)
End Sub

Private Sub cmd_Problem_Click()
If IsNull(cbo_Date) Then
    MsgBox "Choose a date!"
    cbo_Date.SetFocus
    Exit Sub
End If

DoCmd.ApplyFilter wherecondition:="SalesDate = #" & cbo_Date & "#"

End Sub

Private Sub cmd_ShowAll_Click()
DoCmd.ShowAllRecords
End Sub

Private Sub cmd_Solution_Click()

Dim DateAsNumber As Long

If IsNull(cbo_Date) Then
    MsgBox "Choose a date!"
    cbo_Date.SetFocus
    Exit Sub
End If


'DateAsNumber = CLng(cbo_Date.Value)
'dit werkt alleen als de filteropdracht voor het eerst werd uitgevoerd
DateAsNumber = CLng(CDate(cbo_Date.Value))
DoCmd.ApplyFilter wherecondition:="SalesDate = " & DateAsNumber
End Sub
 

Bijlagen

  • Datums.docx
    544 KB · Weergaven: 16
Formulierobjecten (zeker als ze niet-gebonden zijn) hebben geen eigen gegevenstype; die moet dan worden bepaald a.d.h.v. de inhoud. Dat gaat bij jou nu dus fout. Dat kun je voorkomen (althans: bij mij werkt dat) door de keuzelijst een Notatie te geven, bijvoorbeeld Korte Datumnotatie. Op dat moment 'weet' Access dat het om een datum gaat, en is het probleem weg.

Overigens kun je een db het beste zippen; dan is er niks aan de hand.
 
Dat is een verklaring, ja. En ook een oplossing. Maar hoe komt het, als je dat niét doet, dat Typename aanvankelijk WEL in "date" resulteert, maar zodra je één keer een filter hebt toegepast plots als een "string" wordt geïnterpreteerd?
 
Dat zijn de wonderen van Access :). Lucky shot wellicht. Je biedt in eerste instantie natuurlijk ook een datum aan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan