Функция Double()
Модераторы: m0p3e, edward_K, Модераторы
Функция Double()
В букваре "Средство разработки Атлантис. Арифметические выражения и функции. Часть 1" на стр.31 сказано, что при преобразовании строки в число, в случае ошибки, результат будет нулевым. А вот в каких случаях возможна такая ошибка? Для эксперимента в форме Стандартного складского ордера в секции .fields я заменил поле Summ на Double(Summ). Результат: половина спецификаций выходит с нулевой стоимостью
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 29 мар 2005, 17:49
Re: Функция Double()
<HTML>В данном случае ошибка преобразования скорее всего из-за символа разделителя разрядов тысяч (`).
Попробуй такую конструкцию :
double( replace( string( Summ ),'`', '' ) )</HTML>
Попробуй такую конструкцию :
double( replace( string( Summ ),'`', '' ) )</HTML>
Re: Функция Double()
Действительно, такая конструкция исправляет ситуацию
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Постоянный гость
- Сообщения: 55
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Тверь/Москва
- Контактная информация:
Re: Функция Double()
Ну мало ли какая м.б. ошибка. Например разделитель дробной части не '.' , а ','
Посмотри, скорее всего в твоем случае, не выводятся чилса с разделителями разрядов.
например 10`234`102.00, т.е все что меньше 1000 у тебя нормально.
тогда можно написать следующее:
Double(Replace(Summ,'`',''))
Посмотри, скорее всего в твоем случае, не выводятся чилса с разделителями разрядов.
например 10`234`102.00, т.е все что меньше 1000 у тебя нормально.
тогда можно написать следующее:
Double(Replace(Summ,'`',''))
-
- Постоянный гость
- Сообщения: 55
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Тверь/Москва
- Контактная информация:
Re: Функция Double()
Черт... пока набирал уже forummaster отде самое ответил...... :-/
Re: Функция Double()
forummaster, а вот такая загадка:
В "ВЕДОМОСТИ НАЛИЧИЯ (ЦЕНЫ ПО РАЗРЕЗУ В НАЦ. ВАЛЮТЕ)" (форма NAL_MOL_RAZ_NDE, прототип 'nal_ms') в цикле просто суммирую поле Summa3 и вывожу итог в форму.
Этот итог НЕ равен полю itogo3 из этой же формы ???
Причина тоже в преобразовании?
Если нет, какой сумме верить?
Пролучается, такой важный отчет, как "Наличие...", выдает, мягко говоря, не совсем верную информацию - либо по итогам, либо по строкам
В "ВЕДОМОСТИ НАЛИЧИЯ (ЦЕНЫ ПО РАЗРЕЗУ В НАЦ. ВАЛЮТЕ)" (форма NAL_MOL_RAZ_NDE, прототип 'nal_ms') в цикле просто суммирую поле Summa3 и вывожу итог в форму.
Этот итог НЕ равен полю itogo3 из этой же формы ???
Причина тоже в преобразовании?
Если нет, какой сумме верить?
Пролучается, такой важный отчет, как "Наличие...", выдает, мягко говоря, не совсем верную информацию - либо по итогам, либо по строкам
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Функция Double()
У меня в отчете наличия работники то же иногда нестыковочки наблюдают
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 29 мар 2005, 17:49
Re: Функция Double()
<HTML>Сергей сказал:
>
> forummaster, а вот такая загадка:
Я не занимаюсь отгадыванием загадок
> в цикле просто суммирую
> поле Summa3 и вывожу итог в форму.
> Этот итог НЕ равен полю itogo3 из этой же формы ???
Приведите текст Вашей формы - посмотрим что Вы там делаете.</HTML>
>
> forummaster, а вот такая загадка:
Я не занимаюсь отгадыванием загадок
> в цикле просто суммирую
> поле Summa3 и вывожу итог в форму.
> Этот итог НЕ равен полю itogo3 из этой же формы ???
Приведите текст Вашей формы - посмотрим что Вы там делаете.</HTML>
Добрый день! Имеем такую проблему: нужно в отчете заменьть разделители сумм на пустой сивол. Вариант, предложенный выше, почему-то не прокатывает - replace(string, '`', '' ) - но компилируется.
Написали для вышепоставленной цели кусок кода, в котором две части несут один функционал - удаление этого символа (' - разделитель сумм) по его коду. Причем первая часть кода (где replace) не работает. Вторая же (где замена в тупую) - работает нормально.
Код:
.begin
mystr01 := cur_per;
replace(cur_per, chr(39), '-');
p := pos(chr(39), mystr01);
mystr02 := SubStr (mystr01, 1, p-1);
mystr02 := mystr02 + SubStr (mystr01, p+1, length(mystr01));
mystr01 := mystr02;
end.
Вопрос - как сделать правильно через replace?
И исчо: replace ''' - компилятор не кушает
Написали для вышепоставленной цели кусок кода, в котором две части несут один функционал - удаление этого символа (' - разделитель сумм) по его коду. Причем первая часть кода (где replace) не работает. Вторая же (где замена в тупую) - работает нормально.
Код:
.begin
mystr01 := cur_per;
replace(cur_per, chr(39), '-');
p := pos(chr(39), mystr01);
mystr02 := SubStr (mystr01, 1, p-1);
mystr02 := mystr02 + SubStr (mystr01, p+1, length(mystr01));
mystr01 := mystr02;
end.
Вопрос - как сделать правильно через replace?
И исчо: replace ''' - компилятор не кушает
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Как я понял cur_per объявлен в присоединенных формах к прототипу ReesBVip
он расчитывается так
или почти так
ну раз не можете разобраться с replace, хотя не понятно почему? функция работает замечательно, ни разу не возникало проблем
воспользуйтесь полем Double(sum_per)
он расчитывается так
Код: Выделить всё
cur_per:= DoubleToStr(Double(sum_per),'666''666''666''666''667')+
delimit
ну раз не можете разобраться с replace, хотя не понятно почему? функция работает замечательно, ни разу не возникало проблем
воспользуйтесь полем Double(sum_per)