2016-09-20 1 views
1

J'essaie d'implémenter la fonction DateAdd dans mon formulaire Microsoft Access 2010. J'ai un formulaire qui quand l'utilisateur entre la date (nom de propriété appelé "txtStartDate", alors je veux que la sortie dans une partie différente soit dans le futur 18 jours (nom de propriété appelé "textEndDate")Fonction DateAdd dans Microsoft Access VBA

I connaître le format sera

=DateAdd("d", 18, txtStartDate) 

mais comment puis-je écrire dans le code VBA pour mettre en œuvre?

+0

Je crois que vous avez vos critères dans le mauvais ordre voir: https://support.office.com/fr-fr/article/DateAdd-Function-63befdf6-1ffa-4357-9424-61e8c57afc19 donc il devrait être '= DateAdd (" d ", 18, txtStartDate)' –

+0

Merci @ScottCraner – ktcn414

Répondre

0

Hope this helps un peu, deux déclarations à la date initiale et la nouvelle date. Msgbox leur montre alors à la fois ici sur différentes lignes:

sub addingDate() 
Dim txtStartDate As Date 
Dim txtEndDate As Date 
    txtStartDate = Now 'Or wherever you get this info from 
    txtEndDate = DateAdd("d", 18, txtStartDate) 
    MsgBox (txtStartDate & vbNewLine & txtEndDate) 
End Sub 
+0

Merci pour l'aide! – ktcn414

0

Il semble que vous convertissiez implicitement une valeur de zone de texte d'une chaîne en date. Vous pouvez ajouter des contrôles comme:

If IsDate(txtStartDate) Then 

Et vous aurez envie d'être particulièrement conscient du comportement si votre code soit en cours d'exécution sur les systèmes qui ont différents paramètres régionaux de date pour les dates américaines/anglais/japonais. Que pourrait nécessitent l'utilisation d'un sélecteur de date ou une autre date-validation sur le contrôle lui-même.

0

Vous n'avez pas besoin de VBA pour faire, seule une expression ControlSource pour cette autre zone de texte:

=DateAdd("d", 18, [txtStartDate]) 
1

Il semble que vous souhaitez définir après une mise à jour. Ainsi, utilisez l'événement AprèsMAJ de la date de début:

Private Sub txtStartDate_AfterUpdate() 

    Dim EndDate As Variant 

    If IsDate(Me!txtStartDate.Value) Then 
     EndDate = DateAdd("d", 18, Me!txtStartDate.Value) 
    Else 
     EndDate = Null 
    End If 
    Me!txtEndDate.Value = EndDate 

End Sub 
0

Essayez ceci:

= DateAdd("d", 18, cdate(txtStartDate)