Как убедиться, что значение в отчете больше 0 - PullRequest
0 голосов
/ 29 марта 2019

У меня есть счетчик на сотрудников, так что, когда на них жалуются, этот счетчик уменьшается на 1.

Каждый сотрудник начинает с 10 токенов.

Я сделал процесс на странице жалобы таким образом, что при создании жалобы количество токенов уменьшается на 1.

В моей базе данных есть таблица с employee_id и ихtoken count.

Эта таблица отображается в интерактивном отчете на вершине.

Проблема заключается в том, что даже если у сотрудника число токенов равно 0, работодатели все равно могут подавать жалобы на них.

Я хочу, чтобы в форме создания жалоб отображалась ошибка, которая запрещает им подавать жалобы, пока у этого сотрудника не будет больше 0 токенов.(Поэтому, когда работодатель пытается подать жалобу, появляется ошибка)

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Я думаю, что на самом деле вам лучше будет подать подтверждение при подаче жалобы. Когда вы подаете жалобу, запустите проверку, которая проверяет, есть ли у сотрудника токены, если его токены <= 0, то появляется всплывающая ошибка. Проверка может выглядеть примерно так </p>

DECLARE 
  s_tokens NUMBER; 
  b BOOLEAN; 
BEGIN
BEGIN 
  SELECT token_count
    INTO s_tokens
    FROM token_table
   WHERE employee_id = :EMPLOYEE_ID -- taken from the active complaint form

  IF s_tokens <= 0 THEN
    b := FALSE;
  ELSE
    b := TRUE;
  END IF;
EXCEPTION
  WHEN others THEN  -- to catch if the employee is not in the table or if anything else messes up
    b := FALSE;
END;
RETURN b;
END;

Это довольно простая проверка, вы можете ее значительно улучшить, но она должна работать для начинающих. Настройте проверку на выполнение кода plsql, возвращающего логическое значение, и затем вы можете изменить текст ошибки на любой другой.

0 голосов
/ 29 марта 2019

Если вы хотите, чтобы в отчете всегда отображалось число ноль или больше, вы можете использовать GREATEST( token, 0 ):

Установка Oracle :

CREATE TABLE tokens ( id, token ) AS
  SELECT 1, 10 FROM DUAL UNION ALL
  SELECT 2,  3 FROM DUAL UNION ALL
  SELECT 3,  0 FROM DUAL UNION ALL
  SELECT 4, -1 FROM DUAL UNION ALL
  SELECT 5, -9 FROM DUAL;

Запрос

SELECT id,
       GREATEST( token, 0 ) AS token
FROM   tokens;

выход

ID | TOKEN
-: | ----:
 1 |    10
 2 |     3
 3 |     0
 4 |     0
 5 |     0

дБ <> скрипка здесь

...