2017-09-01 4 views
2

J'essaie d'obtenir une plage de dates qui prend l'année civile après la date de transaction. Dites si la date était cette année, alors elle devrait être 1/01/2018 - 31/12/2018. J'utilise cette syntaxe mais j'obtiens l'erreur que tout ce qui suit la première ligne ne fait pas partie de la formule. Des idées?Plage de dates de format pour l'année prochaine

Local DateVar d := CDate cstr(year({TransDate})); 
Local DateVar Range dr := DateSerial (Year(d)+ 1, Month(d) - 1, 1) To 
          DateSerial (Year(d)+ 1, Month(d) - 1, 1); 

Répondre

2

Vous êtes absent entre parenthèses pour CDate dans votre première ligne. La syntaxe correcte serait:

Local DateVar d := CDate(cstr(year({?Start Date}))); 

Cependant, cela ne fonctionnera toujours pas, car le résultat d'une formule ne peut pas être une plage de dates. Au lieu de cela, séparez la plage dans un champ StartDate et EndDate, puis utilisez-les pour vos calculs.


StartDate:DateSerial(Year({?Date}) + 1, 1, 1)

EndDate:DateSerial(Year({?Date}) + 1, 12, 31)

+0

Il faut donc utiliser deux champs de formule? – user1327418

+1

@ user1327418 À peu près. Je fais beaucoup de rapports avec des plages de dates, et j'utilise toujours '{Date}> = {StartDate} ET {Date} <= {EndDate}' – 4444

+0

Mais si vous avez une date donnée, comment dérivez-vous le premier de l'année prochaine? l'année? – user1327418