02.04.2007, 15:57 | #1 |
Участник
|
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!)
Добрый день!
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 В DataSources->CustTrans->init: X++: criteriaZeroAmount = this.query().dataSourceNo(1).addRange(fieldnum(CustTrans,AmountCur)); X++: criteriaZeroAmount.value(strFmt('!0'));
CustTrans_ds.executeQuery(); и я никак не могу придумать какое же value надо чтобы query сработал. Там видимо в базе какое-то число типа real. А надо просто спрятать в форме те записи у которых AmoutCur равен 0,00 или -0,00. |
|
02.04.2007, 16:08 | #2 |
Программатор
|
sysQuery::ValueNot(..
criteriaZeroAmount.value(sysQuery::ValueNot('0')); как то так |
|
02.04.2007, 16:09 | #3 |
NavAx
|
queryNotValue не пробовал?
__________________
Isn't it nice when things just work? |
|
02.04.2007, 16:19 | #4 |
Участник
|
Ни queryNotValue ни sysQuery::ValueNot('0') не помогло! полная форма CustTrans с -0,00 и 0,00! Там какой-то длинный real видимо...
|
|
02.04.2007, 16:24 | #5 |
Участник
|
Во-первых, надо все таки
queryNotValue(0); //без кавычек - так правильнее. во-вторых, если не работает, значит или дальше где-то фильтры очищаются, или еще чего-нить. смотрите код. Если используете Tabax, воспользуйтесь кнопкой браузера с Ctrl+Shift для просмотра текущего запроса. |
|
02.04.2007, 16:39 | #6 |
Участник
|
queryNotValue(0);
не работает! и когда смотришь какой query используется - то там Amount !0 |
|
02.04.2007, 16:41 | #7 |
Программатор
|
a sysQuery::ValueNot(0));??
|
|
02.04.2007, 16:53 | #8 |
NavAx
|
та-ак, пойдем от обратного. queryValue(0); правильно отрабатывает?
__________________
Isn't it nice when things just work? |
|
02.04.2007, 17:02 | #9 |
Участник
|
Цитата:
queryValue(0); правильно отрабатывает?
а мне надо просто НЕ выводить те, у которых в форме 0,00 или -0,00 !!! |
|
02.04.2007, 17:07 | #10 |
Злыдни
|
Если проблема с числами, у которых значения со значащими цифрами далеко от десятичного разделителя, то предлагаю округлить значение до четых знаков, а потом провести сравнение с нулем
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
02.04.2007, 17:13 | #11 |
Участник
|
А если так?
X++: this.query().dataSourceNo(1).addRange(fieldnum(CustTable, AmountCur)).value("((AmountCur<=-0.005) || (AmountCur >= 0.005))");
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: rkorchagin (1). |
02.04.2007, 17:50 | #12 |
Участник
|
AndyD
X++: .value("((AmountCur<=-0.005) || (AmountCur >= 0.005))"); |
|
02.04.2007, 17:58 | #13 |
Участник
|
Цитата:
До записи любой суммы в основной валюте нужно использовать метод currency::amount() До записи любой суммы в валюте нужно использовать метод Currency::AmountCur() и т.п. Там несколько различных методов на разные случаи жизни. Кстати, количество тоже до записи надо округлять. Стандартный функционал всегда это делает. Подобные малые доли чреваты очень труднообнаружимыми ошибками. Ищите свои модификации. |
|