AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2007, 10:50   #1  
mRazik is offline
mRazik
Участник
Аватар для mRazik
 
20 / 10 (1) +
Регистрация: 09.02.2007
Thumbs up
Нужно наложить фильтр на поле по дате первого числа месяца и последнего, с первым проблем не возникает, а как программно вытащить последний день месяца?
Старый 09.02.2007, 10:58   #2  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
CALCDATE('<CM>', Date);
Старый 09.02.2007, 13:09   #3  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Или через вирутальную табличку Дата
Старый 09.02.2007, 13:15   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от grif Посмотреть сообщение
Или через вирутальную табличку Дата
В данном случае это будет извращением. Решение должно быть лаконичным. Если есть готовая функция Нави зачем использовать хоть и виртуальную, но таблицу для поиска .. Понятно, что можно, но нужно ли? При недостаточном опыте программирования ваш совет сбивает с толку.
Старый 09.02.2007, 13:30   #5  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Ну если, допустим, требуется какой-то последовательный перебор месяцев для выполнения действий над ними, то мне кажется разумнее как раз табличку Дата использовать. Мы ведь не знаем что конкретно автору нужно.
Старый 09.02.2007, 13:51   #6  
boka is offline
boka
Участник
 
8 / 10 (1) +
Регистрация: 04.05.2004
Month:=DATE2DMY(StartingDate,2);
Year:=DATE2DMY(StartingDate,3);
EndingDate:=CALCDATE('<+CM>',DMY2DATE(1,Month,Year));
Старый 09.02.2007, 13:53   #7  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от boka Посмотреть сообщение
Month:=DATE2DMY(StartingDate,2);
Year:=DATE2DMY(StartingDate,3);
EndingDate:=CALCDATE('<+CM>',DMY2DATE(1,Month,Year));
Усложняем выражение??
Старый 09.02.2007, 16:12   #8  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Цитата:
Сообщение от grif Посмотреть сообщение
Мы ведь не знаем что конкретно автору нужно.
Вроде он написал
Цитата:
Нужно наложить фильтр на поле по дате первого числа месяца и последнего
Старый 09.02.2007, 16:37   #9  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Ну так быть может это нужно делать в цикле за какой-то большой период, например год
Старый 11.02.2007, 13:54   #10  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
Код:
SETRANGE(POSTINGDATE,CALCDATE('Д1',WORKDATE),CALCDATE('Д31',WORKDATE));
01.02.07..28.02.07
Старый 12.02.2007, 10:46   #11  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от Storkich Посмотреть сообщение
Код:
SETRANGE(POSTINGDATE,CALCDATE('Д1',WORKDATE),CALCDATE('Д31',WORKDATE));
01.02.07..28.02.07


Только лучше писать '<D1>' и '<D31>', чтоб для всех языковых настроек работало..
Старый 12.02.2007, 12:53   #12  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Storkich Посмотреть сообщение
Код:
SETRANGE(POSTINGDATE,CALCDATE('Д1',WORKDATE),CALCDATE('Д31',WORKDATE));
01.02.07..28.02.07
А у меня получилось 01.03.07 .. 28.02.07.
Старый 12.02.2007, 13:31   #13  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от romeo Посмотреть сообщение
Цитата:
Сообщение от Storkich Посмотреть сообщение
Код:
SETRANGE(POSTINGDATE,CALCDATE('Д1',WORKDATE),CALCDATE('Д31',WORKDATE));
01.02.07..28.02.07
А у меня получилось 01.03.07 .. 28.02.07.


Правильно получилось. Чтоб получить 01.01.07 .. 28.02.07 надо написать
'-Д1' или '<-D1>' (при условии, что сейчас не 1 число месяца).
Если первое число, то вообще вместо CALCDATE('Д1',WORKDATE) надо писать WORKDATE

P.S. С 31 число то же самое - надо проверять, что сейчас не 31.

В общем, CALCDATE('<CM>', Date) рулит во всех отношениях
Старый 13.02.2007, 10:09   #14  
Ratnik is offline
Ratnik
Участник
Аватар для Ratnik
 
8 / 10 (1) +
Регистрация: 02.02.2006
Последний день месяца - как уже было написано: CALCDATE('CM', DATE);
Первый день месяца - как вариант: CALCDATE('CM+1D-1M', DATE);
Старый 13.02.2007, 10:36   #15  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Ratnik Посмотреть сообщение
Первый день месяца - как вариант: CALCDATE('CM+1D-1M', DATE);
Зачем, если можно
CALCDATE('<-CM>', DATE);
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.