![]() |
#1 |
Участник
|
Range в запросе
Будьте добрые, поправьте мне пожалуйста этот фрагмент
X++: queryBuildRangeTime = queryBuildDataSource.findRange(fieldnum(ReqPO,ReqDateDlv)); if (! queryBuildRangeTime) queryBuildRangeTime = queryBuildDataSource.addRange(fieldnum(ReqPO,ReqDateDlv)); queryBuildRangeTime.value(strfmt('(%2 <= %1) && (%2 >= %3)',toDateReq,fieldstr(ReqPO,ReqDateDlv),fromDateReq)); Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 23. |
|
![]() |
#2 |
Участник
|
Заключите все условие еще раз в скобки ((%2 <= %1) && (%2 >= %3))
|
|
![]() |
#3 |
Программатор
|
Вот так должно работать...
X++: queryBuildRangeTime.value(strfmt('(("%2" <= "%1") && ("%2" >= "%3"))',toDateReq,fieldstr(ReqPO,ReqDateDlv),fromDateReq)); |
|
![]() |
#4 |
Участник
|
Лучше всего, мне кажется, использовать функцию date2strXpp для преобразования даты в нужный формат.
|
|
|
За это сообщение автора поблагодарили: longson (1). |
![]() |
#5 |
Программатор
|
|
|
![]() |
#6 |
Участник
|
Спасибо
![]() Цитата:
Цитата:
![]() |
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Программатор
|
X++: queryBuildRangeTime = queryBuildDataSource.findRange(fieldnum(ReqPO,RecId)); if (! queryBuildRangeTime) queryBuildRangeTime = queryBuildDataSource.addRange(fieldnum(ReqPO,RecId)); queryBuildRangeTime.value(strfmt('(("%2" <= "%1") && ("%2" >= "%3"))',toDateReq,fieldstr(ReqPO,ReqDateDlv),fromDateReq)); ![]() Строку нада по моему накладывать не на поле а на RecId Последний раз редактировалось Sada; 12.04.2007 в 10:47. |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от Sada
![]() X++: queryBuildRangeTime = queryBuildDataSource.findRange(fieldnum(ReqPO,RecId)); if (! queryBuildRangeTime) queryBuildRangeTime = queryBuildDataSource.addRange(fieldnum(ReqPO,RecId)); queryBuildRangeTime.value(strfmt('(("%2" <= "%1") && ("%2" >= "%3"))',toDateReq,fieldstr(ReqPO,ReqDateDlv),fromDateReq)); ![]() Строку нада по моему накладывать не на поле а на RecId А "%1" в дальнейшем тоже выдаст ошибку о некорректном формате даты, afair. |
|
![]() |
#10 |
----------------
|
Господа, скажите, пожалуйста, в чем тайный смысл написания комбинации
"%1",fieldstr(ReqPO,ReqDateDlv) вместо простого "ReqDateDlv"? Последний раз редактировалось Wamr; 12.04.2007 в 10:57. |
|
![]() |
#11 |
Участник
|
Цитата:
![]() Нууу, хотя бы в том, что на этапе компиляции выполнится проверка существования поля ReqDateDlv ![]() |
|
![]() |
#12 |
Участник
|
А если в DataSource две таблицы и имеются поля одинакового имени, которые нужно включить в Range ?
|
|
![]() |
#13 |
Участник
|
Цитата:
http://www.axaptapedia.com/Expressions_in_query_ranges |
|
![]() |
#14 |
Участник
|
А не проще ли использовать
X++: ... queryBuildRangeTime.value(SysQuery::range(fromDateReq, toDateReq)); Последний раз редактировалось johny77; 12.04.2007 в 11:49. |
|
![]() |
#15 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: oip (2). |
![]() |
#16 |
Участник
|
Так а если в Range я хочу написать функцию, это возможно?
Например: strfind(InventTable.ItemGroupId,"J",1)>0 |
|
![]() |
#17 |
Дмитрий Ерин
|
нет
__________________
![]() |
|
![]() |
#18 |
Участник
|
Цитата:
X++: ItemGroupId like "*J*" |
|
![]() |
#19 |
Участник
|
Спасибо. Но решил обойти следующем образом
X++: queryBuildRangeType = queryBuildDataSource.findRange(fieldnum(InventTable,ItemGroupId)); if (!queryBuildRangeType) queryBuildRangeType = queryBuildDataSource.addRange(fieldnum(InventTable,ItemGroupId)); switch(planType) { case PlanType_REP::Production : queryBuildRangeType.value(strfmt( '((%10 == %1) || (%10 == %2) || (%10 == %3) || (%10 == %4) || (%10 == %5) || (%10 == %6) || (%10 == %7) || (%10 == %8) || (%10 == %9))', queryValue("БПА_J"),queryValue("БПО_J"),queryValue("БПС_J"),queryValue("БСБ_J"),queryValue("БСБП_J"),queryValue("БСМ_J"),queryValue("БСМат_J"),queryValue("БСО_J"),queryValue("БСП_J"),fieldstr(InventTable,ItemGroupId))); break; |
|
![]() |
#20 |
Программатор
|
Боже мой... зашивать руские букавы в код по-моему не прально в корне...
|
|
Теги |
query, range, фильтр |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|