Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Округление с точносью до рубля, хранимка 
:(
    Опции темы
Akella
Дата 21.9.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Народ, помогите с созданием процедуры которая округляла бы число с точностью до до рубля
Если число до 50 коп, то вниз, а  если больше 50 копеек, то вверх.
имеем 171,53
должны получить 172,00
имеем 171,43
должны получить 171,00

есть варианты? куда копать?

Это сообщение отредактировал(а) Akella - 21.9.2007, 12:21
PM MAIL   Вверх
Akella
Дата 21.9.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



UDF "третьих фирм" не хочется использовать

Добавлено @ 12:19
есть наработки, к сожалению с ошибками:

Код

begin
--NEW_PARAM выходной парметр для отладки
  select result from sp_get_befor(',', CAST(:VAR_IN AS varchar(255))) into :vb;
  NEW_PARAM = :vb; --почему-то возвращает Null
  suspend;

  select result from sp_get_after(',', CAST(:VAR_IN AS varchar(255))) into :va;
  NEW_PARAM = :va;--почему-то возвращает Null
  suspend;

  --157.53
  INT_VA = CAST(va as integer);--преобразуем копейки к числу 53
  INT_VB = CAST(vb as integer);--преобразуем рубли к числу 157

  va = substring(:va from 1 for 2);

  if (INT_VA >= 50) then begin--53
    INT_VB = INT_VB + 1; --158
  end

  RES = TRIM(TRIM(CAST(INT_VB as varchar(97))) || ',00');
  suspend;
end


Код


sp_get_befor
begin
  select p from pos(:param1, :delim) into :pos1;
  result = SUBSTRING(PARAM1 from 1 for (:pos1-1));
  suspend;
end

--если передаю строку 153,45, то всё нормально возвращает


sp_get_after
Код

begin
  select p from pos(:param1, :delim) into :pos1;
  RESULT  = TRIM(SUBSTRING(PARAM1 from (:pos1+1) for (CHAR_LENGTH(PARAM1) - (:pos1))));--100.52
  suspend;
end


Это сообщение отредактировал(а) Akella - 21.9.2007, 12:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.