10.02.2012 09:49
Всем привет. Создаю кастомный ценник в Report Builder'e.

Собственно в примере идущем с супермагом 28й версии, в ценнике указывается только целая часть цены, а нужна цена вида 10 руб 10 коп. Всё ок, но нужно выделить дробную часть из значения. Подскажите как поступить? trunc'ом пытался выделить - занимает слишком много времени :) Стандартный ценник формируется значительно быстрее. Подскажите как быть. Велосипед изобретать не хочется :))

SQL код:
function CF_PriceFormula return Number is
res number;
begin
  select price into res
  from supermag.SMPrices
  where Article   = :P_Article
      and StoreLoc  = :P_Loc
      and PriceType = :P_Price_Type;
        for i in 1..5000000 loop
        res := trunc(res);
        end loop;
    return res; 
end; 
10.02.2012 09:54
Там функция есть: supermag.russianspell.PriceCardString(2, :price)
Поиграйся первым параметром - он будет выдавать разные варианты для написания цены.
10.02.2012 10:15
Код:
for i in 1..5000000 loop 
res := trunc(res); 
end loop;
я чего-то не понимаю, а зачем тут loop?
10.02.2012 12:20
Цитата:
OlegON
Код:
for i in 1..5000000 loop 
res := trunc(res); 
end loop;
я чего-то не понимаю, а зачем тут loop?
Это я сначала по запарке дернул лишнего с бенчмарка этой функции :)

Заинтересовала меня вот такая функция:
SQL код:
select supermag.RussianSpell.GetSumRub(temp,0,0) into res from dual; 
Но она не работает, вылетает с ORA-06502. Делаю преобразование TO_CHAR, но не помогает =(

SQL код:
function CF_PriceFormula return Number is
res number;
temp number;
temp2 number;
begin
  select price into temp2
  from supermag.SMPrices
  where Article   = :P_Article
      and StoreLoc  = :P_Loc
      and PriceType = :P_Price_Type;
      temp := TO_CHAR(temp2);
      select supermag.RussianSpell.GetSumRub(temp,0,0) into res from dual;
      return res; 
end; 
10.02.2012 12:32
Если я правильно понимаю, ругается на типы данных. Выстроил всё правильно по идее, но один черт не работает =(

[php]
function CF_PriceFormula return Char is
res char;
temp char;
temp2 number;
begin
select price into temp2
from supermag.SMPrices
where Article = :P_Article
and StoreLoc = :P_Loc
and PriceType = :P_Price_Type;
temp := TO_CHAR(temp2);
select supermag.РussianSpell.GetSumRub(temp,0,0) into res from dual;
return res;
end;
[/php]
10.02.2012 12:48
Судя по описанию функции GetSumRub, первый параметр - float (Число с плавающей запятой).
Второе - id валюты.
Третье - формат выходных данных.
10.02.2012 13:11
Цитата:
Mtirt Судя по описанию функции GetSumRub, первый параметр - float (Число с плавающей запятой).
Второе - id валюты.
Третье - формат выходных данных.
А где собственно эти описания можно почитать?

Добавлено через 14 минут 53 секунды
Заработал такой код:

SQL код:
function CF_PriceFormula return char is
res varchar(20);
second_req  varchar(20);
first_req number;
begin
  select price into first_req
  from supermag.SMPrices
  where Article   = :P_Article
      and StoreLoc  = :P_Loc
      and PriceType = :P_Price_Type;
      second_req := TO_CHAR(first_req);
      select supermag.РussianSpell.GetSumRub(second_req,0,0) into res from dual;
      return res;
end; 
Встает следущий вопрос. Как получить параметр единицы измерения товара и его количества для вывода в ценнике? Тоесть 1 кг 51 руб 10 коп, 1 шт 51 руб 10 коп.
10.02.2012 13:12
Нигде :(
Это мои мысли после нажатия на кнопочку describe в pl/sql developere.
10.02.2012 14:14
У меня в ценнике было это:
Код:
function CF_mesnameFormula return Char is
begin
  return :qtyprint || ' ' || lower(:unitname);
end;
11.02.2012 06:36
Цитата:
Mtirt У меня в ценнике было это:
Код:
function CF_mesnameFormula return Char is
begin
  return :qtyprint || ' ' || lower(:unitname);
end;
Спасибо, но все-таки выдрал запросом из бд :)

Подскажите пожалуйста, где хранятся доп. характеристики товара
Часовой пояс GMT +3, время: 22:06.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.