Eerstvolgende dinsdag bepalen

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Goedemorgen

Ik ben bezig met het maken van een rooster. Mensen worden op bepaalde dagen voor werkzaamheden ingedeeld.
Is er een mogelijkheid om als default waarde bij het toevoegen van een record, de datum van de eerstvolgende dag (bijv. dinsdag) in te voeren.
Ik zoek iets als MAX([Datum]), zodat de huidige nieuwste datum opgezocht wordt, en dan op zoek gaan naar de eerstvolgende dinsdag na deze max datum.
Default moet dan die volgende dinsdag getoond worden, maar de datum mag aangepast worden, dus ik kan niet standaard 7 dagen bij de hoogste datum optellen

Iemand een idee ?

mvg
John
 
Zoiets? Met de datum in A1, dit in een andere cel:
Dit geeft de eerstvolgende dinsdag:
=A1+8-WEEKDAG(A1+5)

De volgende dag kan je doen met: =A1+1
 
Laatst bewerkt:
Hallo Edmoor

Dank voor reactie

Ik heb het inmiddels opgelost met een functie:

Code:
Public Function VolgendeDinsdag() As Date
Dim datMax As Date, intWeekdag As Integer, intVerschil As Integer

    If Not IsNull(DMax("Datum", "tblRooster")) Then
        datMax = DMax("Datum", "tblRooster")
    Else
        datMax = Date
    End If
    
    intWeekdag = Weekday(datMax, vbWednesday)
    
    VolgendeDinsdag = DateAdd("d", 7 + (intWeekdag <> 7) * intWeekdag, datMax)
    
End Function

Bij standaardwaard op het formulier vul ik in '=VolgendeDinsdag()'
Probleem is echter nu, dat op moment dat je begint een nieuwe record in te vullen, de database al gelijk een nieuw record met nieuwe standaardwaarde neerzet. De maximale waarde is dan nog niet aangepast aan de waarde die je in het huidige record invult (hoop dat ik het zo duidelijk omschreven heb)
Bij openen formulier wordt juiste nieuwe datum ingevuld, maar nadat je een record hebt ingevoerd, wordt de dan eerstvolgende dinsdag niet correct weergegeven.

Hoe zou ik dat op kunnen lossen?
Kan ik de nieuwe standaardwaarde na wijzigen van bestaand record, of invoeren van nieuwe record opnieuw laten berekenen ?

mvg
John
 

Bijlagen

Ik heb niet opgelet en een Excel functie geplaatst. Zie nu pas dat dit de Access sectie is en daar kan ik je helaas niet bij helpen :o
 
Ik snap je probleem niet helemaal. Je gebruikt een standaardwaard die met Dmax de hoogste datum opzoekt. Zelf zou ik het anders doen, maar als het werkt voor jou, dan prima natuurlijk.
En die techniek werkt, zeg je bij het openen van het formulier.
Probleem is echter nu, dat op moment dat je begint een nieuwe record in te vullen, de database al gelijk een nieuw record met nieuwe standaardwaarde neerzet. De maximale waarde is dan nog niet aangepast aan de waarde die je in het huidige record invult (hoop dat ik het zo duidelijk omschreven heb)
Bij openen formulier wordt juiste nieuwe datum ingevuld, maar nadat je een record hebt ingevoerd, wordt de dan eerstvolgende dinsdag niet correct weergegeven.
Hier raak je mij dus helemaal,kwijt; ik snap niet wat je bedoelt.
 
Goedemorgen,

Ik heb het als volgt opgelost:
Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)

    If Me.NewRecord Then
        If IsNull(Me.Naam) Then
            Me.Undo
            
        Else
            If IsNull(Me.Datum) Then
                Me.Datum = VolgendeDinsdag()
            End If
        End If
        
    End If

End Sub

Private Sub Form_Current()

    If Me.NewRecord And IsNull(Me.Datum) Then
        Me.Datum = VolgendeDinsdag()
    End If
    
End Sub

waarbij de functie VolgendeDinsdag er zo uit ziet:
Code:
Public Function VolgendeDinsdag() As Date
Dim datMax As Date, intWeekdag As Integer, intVerschil As Integer

    If Not IsNull(DMax("Datum", "tblRooster")) Then
        datMax = DMax("Datum", "tblRooster")
    Else
        datMax = Date
    End If
    
    intWeekdag = Weekday(datMax, vbWednesday)
    
    VolgendeDinsdag = DateAdd("d", 7 + (intWeekdag <> 7) * intWeekdag, datMax)
    
End Function

Dit is precies als ik voor ogen had. Op moment dat je een nieuw record aanwijst, wordt de volgende datum ingevuld, en als je weer een andere record selecteert is de "nieuwe" datum weer verwijderd. Er wordt geen Standaardwaarde bij Gegevens opgenomen

mvg
John
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan