2017-09-13 2 views
0

J'ai un tableau suivi du first_pay_date, terme (durée des paiements, différente pour chaque ligne) et last_pay_date. J'ajoute un champ, pay_date, qui affichera la prochaine date de paiement, en supposant que les paiements sont effectués chaque mois et à temps ... un calendrier de paiement. J'ai besoin du champ pay_date pour afficher la prochaine date de paiement en fonction de la date du jour et continuer à afficher une date jusqu'à aujourd'hui = last_pay_date/la durée du terme. J'ai essayé d'utiliser divers relevés IIf et celui-ci renvoie le jour basé sur la date d'aujourd'hui mais j'en ai toujours besoin pour renvoyer une date mensuelle pour tout le mois (ie 36), pas seulement 30 jours du premier paiement la date qui ne changera jamais:Renvoyer les échéances mensuelles pour la période définie en fonction de la date de début et de la date d'aujourd'hui

=IIf([first_pay_date]>=Date(),[first_pay_date],DateAdd("d",30,[first_pay_date])) 

peut-être que l'expression n'est pas le chemin à parcourir et je besoin d'une requête qui crée une table temporaire pour stocker les dates de paiement ou une combinaison des deux, peut-être même utiliser et à côté. J'ai essayé de chercher ceci mais je ne peux pas trouver une réponse mais je sens comme ceci est quelque chose qui existe que je ne cherche juste pas correctement. Si quelqu'un pouvait me diriger dans la bonne direction, je l'apprécierais grandement. Mes données proviennent d'un fichier Excel que j'importe dans une base de données d'accès. Je peux ajouter des champs basés sur des calculs de champs existants mais les données dans le fichier sont tout ce que je dois travailler donc je n'ai pas de date de réception pour les paiements.

données de l'échantillon:

first_pay_date | last_pay date | term 

9/15/2017  | 8/15/2020  | 36 

9/5/2017  | 8/5/2019  | 24 

Sur la base de la date d'aujourd'hui mon pay_date = 9/15/2017, mais le samedi, mon pay_date = 10/15/2017. Sur 16/10/2017, je veux que mon pay_date soit 11/14/2017

Répondre

0

Peut-être quelque chose comme:

=IIf(DateAdd("d", 36 * 30, first_pay_date) > Date(), Null, DateAdd("d", (-Int(DateDiff("d", Date(), first_pay_date)/30) * 30, first_pay_date)) 

Correction:

=IIf(DateAdd("d", 36 * 30, first_pay_date) > Date(), Null, DateAdd("d", (-Int(DateDiff("d", Date(), first_pay_date)/30) + 1) * 30, first_pay_date)) 

Pour simuler:

first_pay_date=DateAdd("d", -36 * 30, Date) 
today = DateAdd("d", 60, Date) 

? IIf(DateAdd("d", 36 * 30, first_pay_date) > today, Null, DateAdd("d", (-Int(DateDiff("d", today, first_pay_date)/30) + 1) * 30, first_pay_date)) 

Result: 2017-12-13 
+0

Merci pour la réponse. Je reçois une erreur: "L'expression que vous avez entré a une fonction contenant le mauvais nombre d'arguments." Si le (DateAdd ("d", 36 * 30, first_pay_date)> Date() est évalué comme "True", alors "Null" sera renvoyé mais (DateAdd ("d", 36 * 30, first_pay_date) calcule le last_pay_date Cela est utile pour coupler DateAdd et DateDiff – TechEng

+0

C'était le code de l'air Voir la réponse corrigée, s'il vous plaît – Gustav

+0

Je n'ai pas eu l'erreur mais elle a juste renvoyé une valeur "Null" indépendamment de ma première date de paiement .. que ce soit dans le passé ou dans le futur, un "Null" a été retourné – TechEng