ik deze formule gemaakt maar hij werkt niet

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
Code:
 Private Sub Cbovantot_Click()
Dim sFilter As String
Dim iDatum1 As Date, iDatum2 As Date
If IsNull(TxtVan) Then
MsgBox "geef begin datum "
    Exit Sub
        End If
If IsNull(TxtTot) Then
MsgBox "geef eind datum "
    Exit Sub
        End If
        
iDatum1 = CDate(Me.TxtVan)
iDatum2 = CDate(Me.TxtTot)


sFilter = "[datum] BETWEEN " & CDate(Me.TxtVan) & "  AND " & CDate(Me.TxtTot)
With Forms!frmPlanning

     .Filter = sFilter
     .FilterOn = True
 
End With
End Sub

twee velden van en tot daar komen datums in en in veld datum moet die dan filteren tussen die datums in.
op moment dat ik dus de zoekfunctie via een button start zien het formulier werken maar niet filteren alle gegevens verdwijnen .
 
Je maakt een paar (kleine) foutjes, waarvan een de belangrijkste: je baseert je filter op de oorspronkelijke tekstvakken, niet op de geconverteerde. En daarnaast gebruik je CDate om een waarde om te zetten, maar de aangeboden waarde (die tekstvakken) zijn ook in je code niet correct omgezet. De juiste code is derhalve:
Code:
Private Sub Cbovantot_Click()
Dim sFilter As String
Dim iDatum1 As Double, iDatum2 As Double
    
    If IsNull(Me.TxtVan) Then
        MsgBox "geef begin datum "
        Exit Sub
    End If
    If IsNull(Me.TxtTot) Then
        MsgBox "geef eind datum "
        Exit Sub
    End If
            
    iDatum1 = CDbl(Me.TxtVan)
    iDatum2 = CDbl(Me.TxtTot)
    
    sFilter = "[datum] BETWEEN " & CDate(iDatum1) & "  AND " & CDate(iDatum2)
     Me.Filter = sFilter
     Me.FilterOn = True

End Sub
Je ziet dat ik iDatum1 en iDatum2 heb omgezet van Date naar Double, en dat ik de geselecteerde datums converteer naar een getal met CDbl. In de string wordt de code weer terugvertaald met CDate naar een datum.
 
*** toch nog moeilijker dan ik dacht dat vba haha
helaas werkt dat nog niet blijft zoekblad leegooien in plaats op datum filteren

maakt het een verschil of je een formulier hebt met daarin sub form ?
en gewoon gegevens van tabel?

denk aan me.recordsource between = select als je een tabel gebruikt ?
welke is welke ?
 
Het omrekenen naar een getal werkt waarschijnlijk beter in een query dan in een filter. Probeer deze eens:
Code:
Private Sub Cbovantot_Click()
Dim sFilter As String
Const strcJetDate = "\#mm\/dd\/yyyy\#"  'Do NOT change it to match your local settings.
    
    If IsNull(Me.TxtVan) Then
        MsgBox "geef begin datum "
        Exit Sub
    End If
    If IsNull(Me.TxtTot) Then
        MsgBox "geef eind datum "
        Exit Sub
    End If

    sFilter = "([datum] >= " & Format(Me.TxtVan, strcJetDate) & ")"
    sFilter = sFilter & " AND ([datum] < " & Format(Me.TxtTot + 1, strcJetDate) & ")"
     Me.Filter = sFilter
     Me.FilterOn = True

End Sub
 
werkt perfect dank daarvoor
mag ik een brutale vraag stellen .
as ik bv in formulier tweeweken planner wil hebben en de velnaam de datum zou moet zijn hoe moet ik dat maken
bv veld 1 is ma 28-1 di 29-1 enz voor twee weken en elke dag past deze zich aan .
hoop dat je er iets van snapt
 
Helaas :). Heb je het over een formulier of een rapport? Een query? En wil je altijd 14 dagen zien geteld vanaf de eerste? Of gaat het om de 2 complete weken van de eerste datum?
 
formulier
boven staan filters daaronder namen en daarnaast dan ma 12-1 di13-1 enz tot zondag 26-1
hier worden dan uren onder ingevuld
helaas kan ik nu niet scannen ander had ik een voorbeeld gestuurd .
 
Da's tich wel handig, want ik snap het nog steeds niet :). Heb je soms een kruistabel gebruikt?
 
mag dit zodra ik de scanner weer klaar heb als nog bij je terug komen met deze vraag?
 
datum boven in de balk

Naamloos.jpgOctafish
ik heb even nagemaakt in excel via scanner niet leesbaar meer
maar dus zoiets
links telt die gewerkte uren op en filter die kan ik wel maken geen probleem
de datum wordt dan zelf gecreerd .
moet wel in access
 
Da's een kruistabel, die je laat zien. Ik zou voor het weergeven van de uren dan een apart veld gebruiken, waar je een waardeveld van maakt. Met de functie Eerste of Laatste, zodat je de tijden ziet. Voor het optellen van de uren gebruik je dan een formule die de twee tijden (moeten aparte velden zijn in je tabel) van elkaar aftrekken, en optellen met SOM. Dat veld is dan een Rijkop.
 
is het mogelijk hiervan een voorbeeld te maken word mij misschien duidelijk.
wand kruistabel is niet mijn ding
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan