|
![]() |
#1 |
Участник
|
Цитата:
Хм... Попробую так. Если у вас вычитание даты из даты корректно работает, значит, надежда есть. Upd: Попробовал. Ошибка расширенного диапазона: Ошибка расширенного диапазона запроса: Table1.Date не является корректной парой datasource.field рядом с 45. Видимо, из-за того, что датасорсы уж очень далеко отстоят друг от друга - table2 входит в запрос гораздо выше. Сейчас пробую так: делаю предварительный запрос, собрав в Map интересующие меня пары код - кол-во дней из table2, а затем в основном Query иду по этой мапе и ставлю условие X++: qbdsTable1.addRange(fieldNum(Table1, Date)).value(strfmt('((%2.%4 == %5) && (%6.%7 < %1))', date2StrXpp(systemDateGet() - any2int(mapIterator.value())), //%1 query.dataSourceTable(tableNum(Table2)).name(), //%2 fieldStr(Table2, Days), //%3 fieldStr(Table2, Id), //%4 SysQuery::value(mapIterator.key()), //%5 query.dataSourceTable(tableNum(Table1)).name(), //%6 fieldStr(Table1, Date))); //%7 Последний раз редактировалось Corel; 31.01.2011 в 12:23. |
|
![]() |
#2 |
MCTS
|
Цитата:
![]() |
|
![]() |
#3 |
Участник
|
А такой вариант ?
X++: qbdsInventTrans.addRange(fieldNum(InventTrans, DateFinancial)).value(strfmt('(((%1.%2 + %3.%4 - %5) > 0))', query.dataSourceTable(tableNum(InventTrans)).name(), fieldStr(InventTrans, DateFinancial), query.dataSourceTable(tableNum(Table2)).name(), fieldStr(Table2, Days), date2StrXpp(systemDateGet())); |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от Alexius
![]() А такой вариант ?
X++: qbdsInventTrans.addRange(fieldNum(InventTrans, DateFinancial)).value(strfmt('(((%1.%2 + %3.%4 - %5) > 0))', query.dataSourceTable(tableNum(InventTrans)).name(), fieldStr(InventTrans, DateFinancial), query.dataSourceTable(tableNum(Table2)).name(), fieldStr(Table2, Days), date2StrXpp(systemDateGet())); Последний раз редактировалось Corel; 31.01.2011 в 17:32. |
|
![]() |
#5 |
Участник
|
Цитата:
Код: SELECT TOP 1 DATEFINANCIAL, DATEFINANCIAL - 1 FROM INVENTTRANS WHERE DATEFINANCIAL <> '19000101' PS2. Городить полноценный полигон мне лень ![]() |
|
![]() |
#6 |
Moderator
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: PavelX (1), Corel (1). |
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Corel
![]() Эээ... не обратил.
Хм... Попробую так. Если у вас вычитание даты из даты корректно работает, значит, надежда есть. Upd: Попробовал. Ошибка расширенного диапазона: Ошибка расширенного диапазона запроса: Table1.Date не является корректной парой datasource.field рядом с 45. Видимо, из-за того, что датасорсы уж очень далеко отстоят друг от друга - table2 входит в запрос гораздо выше. Сейчас пробую так: делаю предварительный запрос, собрав в Map интересующие меня пары код - кол-во дней из table2, а затем в основном Query иду по этой мапе и ставлю условие X++: qbdsTable1.addRange(fieldNum(Table1, Date)).value(strfmt('((%2.%4 == "%5") && (%6.%7 < %1))', date2StrXpp(systemDateGet() - any2int(mapIterator.value())), //%1 query.dataSourceTable(tableNum(Table2)).name(), //%2 fieldStr(Table2, Days), //%3 fieldStr(Table2, Id), //%4 SysQuery::value(mapIterator.key()), //%5 query.dataSourceTable(tableNum(Table1)).name(), //%6 fieldStr(Table1, Date))); //%7 Пока что над этим голову ломать дальше не хочу. Спасибо всем за советы. Upd: Придётся-таки думать дальше. При тестировании наткнулся-таки на ограничение длины рэнжа. Буду вместо мэпа заполнять временную таблицу и джойнить её уже. Последний раз редактировалось Corel; 31.01.2011 в 19:23. |
|
Теги |
querybuildrange, дата, расширенный фильтр |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|