oracle Форма скрытого поля от элемента отображения - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь показать или скрыть знак минуса от расширенной цены (отображаемая позиция)

таблица

Transaction Portfolio_Number    PK  Number (7,0)        FK  Not Null
    Stock_Code      Varchar2 (10)       FK  Not Null
    Transaction_Date        Date    Not Null
    Exchange_Code       Varchar2 (4)        FK  Not Null
    Broker_Number       Number (7,0)        FK  Not Null
    Buy_Sell        Char (1)    Not Null
    Quantity        Number (7,0)    Not Null
    Price_Per_Share     Number (6,2)    Not Null

мой отображаемый элемент - количество * price_per_share.

если это покупка, то расширенная цена будет иметь знак минус. если это продажа, тогда расширенная цена будет иметь знак минус (который скрыл поле?), одна вещь - знак минус, означающий, что он отрицательный. потому что я буду использовать его для расчета общей суммы продленной цены. если у вас есть другой способ работы. Также поделитесь со мной, пожалуйста.

1 Ответ

0 голосов
/ 11 апреля 2020

Я не уверен, что понял, что вы говорите; пример, безусловно, поможет.

Тем временем: вы сказали, что:

  • если buy_sell = buy, то price_per_share отрицателен
  • если buy_sell = sell тогда .. . что? Я понятия не имею, что означает написанное вами предложение:

    тогда расширенная цена будет иметь знак минус (который скрыл поле?)

    Это выглядит так же, как "купить" мне.

Кроме того, что такое "общая сумма продленной цены"?

Как я уже сказал: пример и - возможно - перефразировка вопроса помогут.


Тем временем, посмотрите, поможет ли это:

:block.display_item := case when :block.buy_sell = 'B' then -1
                            when :block.buy_seel = 'B' then  1
                       end * :block.quantity * abs(:block.price_per_share);

, который говорит: не обращайте внимания на знак price_per_share (положительный или отрицательный) - всегда принимайте его абсолютное значение (это что делает функция abs). Умножьте это на quantity. Решите, какой знак использовать, проверив значение buy_sell (я предположил, что покупка означает отрицательный , а продажа означает положительный ).


Если есть два задействуйте таблицы, объедините их и выделите в элемент блока (предполагая, что приведенный выше код имеет смысл); как то так:

select sum(case when t.buy_sell = 'B' then -1
                when t.buy_sell = 'S' then  1
           end * t.quantity * abs(t.price_per_share)
          )
into :block.display_item
from transaction t join portfolio p on p.portfolio_number = t.portfolio_number
where t.portfolio_number = :block.portfolio_number;
...