Страница 1 из 1
Функция Double()
Добавлено: 16 янв 2004, 11:31
Serges
В букваре "Средство разработки Атлантис. Арифметические выражения и функции. Часть 1" на стр.31 сказано, что при преобразовании строки в число, в случае ошибки, результат будет нулевым. А вот в каких случаях возможна такая ошибка? Для эксперимента в форме Стандартного складского ордера в секции .fields я заменил поле Summ на Double(Summ). Результат: половина спецификаций выходит с нулевой стоимостью
Re: Функция Double()
Добавлено: 16 янв 2004, 12:04
forummaster
<HTML>В данном случае ошибка преобразования скорее всего из-за символа разделителя разрядов тысяч (`).
Попробуй такую конструкцию :
double( replace( string( Summ ),'`', '' ) )</HTML>
Re: Функция Double()
Добавлено: 16 янв 2004, 12:33
Serges
Действительно, такая конструкция исправляет ситуацию
Re: Функция Double()
Добавлено: 16 янв 2004, 12:53
blackoff
Ну мало ли какая м.б. ошибка. Например разделитель дробной части не '.' , а ','
Посмотри, скорее всего в твоем случае, не выводятся чилса с разделителями разрядов.
например 10`234`102.00, т.е все что меньше 1000 у тебя нормально.
тогда можно написать следующее:
Double(Replace(Summ,'`',''))
Re: Функция Double()
Добавлено: 16 янв 2004, 12:56
blackoff
Черт... пока набирал уже forummaster отде самое ответил...... :-/
Re: Функция Double()
Добавлено: 04 фев 2004, 12:14
Serges
forummaster, а вот такая загадка:
В "ВЕДОМОСТИ НАЛИЧИЯ (ЦЕНЫ ПО РАЗРЕЗУ В НАЦ. ВАЛЮТЕ)" (форма NAL_MOL_RAZ_NDE, прототип 'nal_ms') в цикле просто суммирую поле Summa3 и вывожу итог в форму.
Этот итог НЕ равен полю itogo3 из этой же формы ???
Причина тоже в преобразовании?
Если нет, какой сумме верить?
Пролучается, такой важный отчет, как "Наличие...", выдает, мягко говоря, не совсем верную информацию - либо по итогам, либо по строкам
Re: Функция Double()
Добавлено: 04 фев 2004, 13:35
Den
У меня в отчете наличия работники то же иногда нестыковочки наблюдают
Re: Функция Double()
Добавлено: 04 фев 2004, 14:21
forummaster
<HTML>Сергей сказал:
>
> forummaster, а вот такая загадка:
Я не занимаюсь отгадыванием загадок
> в цикле просто суммирую
> поле Summa3 и вывожу итог в форму.
> Этот итог НЕ равен полю itogo3 из этой же формы ???
Приведите текст Вашей формы - посмотрим что Вы там делаете.</HTML>
Добавлено: 24 июн 2005, 14:39
Nick
Добрый день! Имеем такую проблему: нужно в отчете заменьть разделители сумм на пустой сивол. Вариант, предложенный выше, почему-то не прокатывает - 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 ''' - компилятор не кушает
Добавлено: 24 июн 2005, 14:55
Max_Fin
А он и не должен "кушать" и компилить не должен
нужно так '''', т.е. вместо одного символа, два символа
Добавлено: 24 июн 2005, 15:03
Max_Fin
А разделитель сумм может быть chr(96), может в этом проблема, пример числа кинте если не так.
Добавлено: 24 июн 2005, 15:15
Nick
Тех поддержка подсказала наиболее простой вариант - поля для вывода, где надо убрать (') нужно делать цифровыми? если они строковые и если в шаблоне для этих полей стоит &'&&& - убрать из шаблона '
Добавлено: 24 июн 2005, 15:24
Nick
replace(cur_per, '"', '');
replace(cur_per, chr(96), '');
не пашет
Пример числа:
8'000.00
Добавлено: 24 июн 2005, 19:20
Max_Fin
Как я понял cur_per объявлен в присоединенных формах к прототипу ReesBVip
он расчитывается так
Код: Выделить всё
cur_per:= DoubleToStr(Double(sum_per),'666''666''666''666''667')+
delimit
или почти так
ну раз не можете разобраться с replace, хотя не понятно почему? функция работает замечательно, ни разу не возникало проблем
воспользуйтесь полем Double(sum_per)