powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / можно ли создать свою переменную
18 сообщений из 18, страница 1 из 1
можно ли создать свою переменную
    #38785950
Oleg3412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.

Создал таблицу (в ней поля ID, Login, Territory, Comments), cделал триггер, который при обновлении таблицы присваивает полю 'Login' значение 'App_user':

create or replace trigger "T1_CLIENTS"
BEFORE
insert or update on "CLIENTS"
for each row
begin
if :new.Login is null then
:new.Login := v('APP_USER');
end if;
end;

Теперь появилась проблема с автоматическим внесением поля :new.Territory.

Я могу вытащить с помощью sql запросов территорию из таблицы с данными пользователей по логину, но не знаю, как её присвоить к :new.Territory. Или может проще создать новую переменную, назвать app_terr, вставить в процесс, только как прописать это в процессе? (там стандартные действия не раскрываются)?
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786015
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg3412,
Табличка зачем? Пиши туда Ид юзверов и все.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786112
Oleg3412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица с юзерами и их территориями, я просто не понимаю, как сделать такую переменную, чтобы когда юзер заходил в сессию, видел свои данные и нажимал на кнопку, вызывающую DML форму, этой переменной (например, app_ter) тоже присваивалось значение как и для :app_user (это сделано в апексе). Надо дополнительный процесс сделать?
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786299
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Shared Components есть раздел Application Item вот там и заводите необходимую переменную, она будет глобальна для всего приложения.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786326
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kasik,

Глобальные переменные зло...
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786338
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg3412,
ты приведи скрины действий пользователя..по шагам.... я лично, ничего не понял.
Или приведи шаблон-мастер который использовал. Там есть сразу 2-е странички с DML.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786339
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg3412юзер заходил в сессию
юзер не знает что такое сессия. Он открыл страничку (скрин)
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786384
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,

В парадигме Apex вещь бывает незаменимой.

А в чем зло то?
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786398
Oleg3412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня интерактивный отчет и форма DML для изменения полей (сделал через Create Application).

Сделал аутентификацию.

Но нужно, чтобы пользователь видел только свои поля. Я зашел в Home page -> в Body -> таблицу и изменил код SQL, который подгружает данные с таблицы, добавив условие where:

Select
"LOGIN",
"TERRITORY",
"DATE",
"COMMENTS",
from "DATA"
where UPPER("LOGIN") = UPPER(:APP_USER)

Теперь юзер видит только свои записи и нажав стандартную кнопку Create или Edit, он может управлять данными через DML форму.

Но я не хочу, чтобы он управлял полями LOGIN, TERRITORY, и они заполнялось автоматически.

LOGIN получилось заполнить через триггер:

create or replace trigger "DATA_T1"
BEFORE
insert or update on "DATA"
for each row
begin
if :new.LOGIN is null then
:new.LOGIN := v('APP_USER');
end if;
end;​

У меня для аутентификации есть таблица USER, где есть логин (LOGIN), пароль (PASSWORD) и территория (TERRITORY).

Я создал глобальную переменную app_ter, но не понимаю, где и как можно присвоить ей значение для того, чтобы потом триггер взял с неё территорию пользователя и обновил поле TERRITORY. Залазил в процессы в Home page и в DML form - вносит пустое значение, например, в процессе Home page:

begin
:APP_TER := v('TERRITORY');
end;

Но не понимает система переменных.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786402
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasik,
парадигма веб - параметры через URL. Большие - коллекции.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786415
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg3412,
сделай в триггере select запрос на получение территории из таблы юзеров.
По хорошему нужно территорию из data убрать, т.к. она уже есть в другой таблице (нормализация БД)
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38786430
Oleg3412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, спасибо за направление, сейчас сделаю.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38788137
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kasikblkangel,

В парадигме Apex вещь бывает незаменимой.

А в чем зло то?
Поясняю.
Дано:
- страницы номерами 1,2. Страница 1 содержит данный клиента (ФИО, аддрес и т.д.), страница 2, заказы клиента.
- На каждой странице есть процесс after submit, которые используют глобальную переменную, например :CLIENT_ID (ИД клиента).

Теперь представим работает пользователь на странице 2 он открыл карточку заказов клиента (:CLIENT_ID=1), и тут пользователю захотелось посмотреть какие то данные у другого клиента. Он не закрываю страницу 2, ОТКРЫВАЕТ В НОВОМ ОКНЕ новую страницу с той же сессией и идет в карту другого клиента (:CLIENT_ID=2) на страницу 1 (или на страницу 2, эффект одинаковый).
Поработав в новом окне, он возвращается к первому окну и жмет сохранить.
В итоге, новые заказы или даже все будут принадлежать :CLIENT_ID=2, хотя пользователь этого не хотел. А что самое ужасное, что пользователь может и не заметить.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38788186
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,

Молотком тоже можно саморезы закалачивать!
Можно, но нафига...
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38789773
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel- На каждой странице есть процесс after submit, которые используют глобальную переменную, например :CLIENT_ID (ИД клиента).
Если это неизменная в рамках сессии константа, то почему бы и нет.
blkangelГлобальные переменные зло...
Это не зло и не добро, это инструмент.

Присвоить значение страничному полю в сессии можно где угодно: в процессе другой страницы, в URL, в вычислении уровня приложения, в DA. Это не означает, что страничные поля плохие или хорошие.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38790239
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerПрисвоить значение страничному полю в сессии можно где угодно
не очень понял.
Если поле глобальное, то оно не страничное.
Как тут присвоить в другом процессе, если страница (не создана...не на экране?)?
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38790690
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Чтобы обойти грабли, которые я описал, при загрузке страницы нужно глобальную переменную присвоить переменной на странице, а в процессе сохранения использовать именно ее.
...
Рейтинг: 0 / 0
можно ли создать свою переменную
    #38790775
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelPetro123,
Чтобы обойти грабли, которые я описал, при загрузке страницы нужно глобальную переменную присвоить переменной на странице, а в процессе сохранения использовать именно ее.
ну, дак, второй вариант обойти грабли вообще не использовать глобальную.
Случай то рядовой?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / можно ли создать свою переменную
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]