Как использовать Dynami c оповещения для формы входа? - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в разработке Oracle с использованием форм oracle 10g.

Я пытаюсь написать этот код для входа в систему. Когда пользователь вводит неправильный пароль, он выдает предупреждение во всплывающем окне. Кроме того, когда пользователь вводит неправильное имя пользователя, появляется предупреждение.

Я написал этот код, но не могу его исправить.

DECLARE
    un    VARCHAR (15);
    pwd   VARCHAR (15);
BEGIN
    --- Dynamic altert properties code start--
    SET_ALERT_PROPERTY ('LOGIN_ALERTS', TITLE, 'Security Altert');
    SET_ALERT_PROPERTY ('LOGIN_ALERTS',
                        ALERT_MESSAGE_TEXT,
                        'Wrong Username?');
    SET_ALERT_PROPERTY ('LOGIN_ALERTS',
                        ALERT_MESSAGE_TEXT,
                        'Wrong Password?');

    SELECT username, users_password
      INTO un, pwd
      FROM MENU_USERS
     WHERE username = :TXT_USERNAME;
        IF un = :TXT_USERNAME
        THEN
            IF pwd = :TXT_PWD
            THEN
                CALL_FORM ('F:\ISMS\INV\inv_stock.fmx');
            ELSE
                SHOW_ALERT ('LOGIN_ALERTS');
            END IF;
        ELSE
            SHOW_ALERT ('LOGIN_ALERTS');
        END IF;
END;

1 Ответ

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

Оповещения в порядке, но - последовательные message вызовы тоже подойдут. В этом примере показано, как использовать этот подход.

Код, который вы написали, является своего рода «неправильным», поскольку он не обрабатывает ситуацию «неправильное имя пользователя». Когда это произойдет, select ничего не вернет и вызовет исключение no_data_found, которое должно быть обработано.

Здесь вы go:

declare
  pwd varchar2(15);
begin
  select users_password
    into pwd
    from menu_users
    where username = :txt_username;

  -- if TXT_USERNAME value exists, SELECT will return its password
  if pwd = :txt_pwd then
     call_form('whichever form you want');
  else
     message('Wrong password');
     message('Wrong password');
     raise form_trigger_failure;
  end if;

exception
  when no_data_found then
    -- SELECT didn't return anything, but raised an exception
    message('Wrong username');
    message('Wrong username');
end;    
...