powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Несколько значений в одном текстовом поле (apex_collections?)
9 сообщений из 9, страница 1 из 1
Несколько значений в одном текстовом поле (apex_collections?)
    #38160092
Глаза умные, всё понимаю. Только подскажите, куда копать.

Наверняка решалась задача, когда желательно в одном текстовом поле (или даже varray of) содержать набор данных определённой структуры (например список телефонов через ; или даже адрес город;улица;дом).
Ну а редактировать в интерфейсе APEX это хочется в виде таблички или формочки.

Поделитесь решением, плиз. Какого типа в БД у вас поле, как подтягиваете в APEX, как редактируете, как сабмитите.

Благодарю заранее за помощь.
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160140
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерГлаза умные, всё понимаю. Только подскажите, куда копать.

Наверняка решалась задача, когда желательно в одном текстовом поле (или даже varray of) содержать набор данных определённой структуры (например список телефонов через ; или даже адрес город;улица;дом).
Ну а редактировать в интерфейсе APEX это хочется в виде таблички или формочки.

Поделитесь решением, плиз. Какого типа в БД у вас поле, как подтягиваете в APEX, как редактируете, как сабмитите.

Благодарю заранее за помощь.Подтянуть - селектом (написать select, который выберет табличку из вашей строки), поля для редактирования - с помощью APEX_ITEM, сабмит - своя процедура, которая даные берет из коллекций apex_collection.g_fXX...
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160148
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
view + instead of + tabular form.

А вообще, нормализовать данные в 1 НФ.
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160312
rockclimberПодтянуть - селектом (написать select, который выберет табличку из вашей строки),
в целом ясно, а вот с этим определённо проблемы. Я как-то не нашёл простого изящного решения как из поля получить рекордсет. Какие-то тонны г-кода с пайп функциями... Воистину проще нормализовать...
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160348
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерВоистину проще нормализовать...
Без нормализации со структурами типа (город+улица+дом) в будущем можно получить кучу проблем с аналитикой.
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160429
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делал подобное (не на апексе) с помощью плагина jeditable (пример с timepicker-ом )
Т.е. в форму попадает свернутое текстовое поле с разделителями, а при клике на нем скриптом разворачивал в мини-форму и отдавал на редактирование. После кнопки ok опять скриптом сворачивал обратно.
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38160491
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саша Сплинтерв целом ясно, а вот с этим определённо проблемы. Я как-то не нашёл простого изящного решения как из поля получить рекордсет. Какие-то тонны г-кода с пайп функциями... Воистину проще нормализовать...
А какие проблемы в получении рекордсета? Если количество полей в строке фиксировано - нет ничего проще:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WITH tbl AS (SELECT   'поле1;поле2;поле 3;;;поле6' str FROM Dual)
SELECT   Rtrim (Regexp_substr (str, '[^;]*(;|$)',1, 1), ';') f1,
         Rtrim (Regexp_substr (str, '[^;]*(;|$)',2, 2), ';') f2,
         Rtrim (Regexp_substr (str, '[^;]*(;|$)',3, 3), ';') f3,
         Rtrim (Regexp_substr (str, '[^;]*(;|$)',4, 4), ';') f4,
         Rtrim (Regexp_substr (str, '[^;]*(;|$)',5, 5), ';') f5,
         Rtrim (Regexp_substr (str, '[^;]*(;|$)',6, 6), ';') f6
                          FROM   tbl

Если надо получить набор строк то тоже просто
Код: plsql
1.
2.
3.
4.
WITH tbl AS (SELECT   'поле1;поле2;поле 3;;;поле6' str FROM Dual)
SELECT   Rtrim (Regexp_substr (str, '[^;]*(;|$)', 1, Level), ';') f
                          FROM   tbl
                    CONNECT BY   Level <= 6
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38161407
Ну без пищи для ума я уже не остался )) Премного благодарен. С походом классическим всё предельно ясно. И хотя аналитика вовсе не требуется, а требуется эффективное прикладное решение, поразмыслить всё равно стоит. Вдруг недорого получится. Классика всё-таки

А вот если красивость такую. Просится поле сделать в табличке типа phones, где CREATE OR REPLACE TYPE phones AS VARRAY (5) OF VARCHAR2(10)

Нет ли, коллеги, случайно каких функций и объектов у АПЕКСа, чтобы сразу в гтовую форму и обратно?
...
Рейтинг: 0 / 0
Несколько значений в одном текстовом поле (apex_collections?)
    #38162237
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерНет ли, коллеги, случайно каких функций и объектов у АПЕКСа, чтобы сразу в гтовую форму и обратно?
Вариант номер один- Текст с разделителями, а при передаче в процедуру сплитить в массив при помощи регулярки
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
-- pj
function Str2Varchar2Table(
  p_str  in varchar2,
  p_delim in varchar2 default ',') return varchar2_table
as  
  v2_t  varchar2_table;
begin
  select trim(regexp_substr(p_str,'[^'||p_delim||']+', 1, level)) 
  bulk collect into v2_t
  from dual
  where trim(regexp_substr(p_str, '[^'||p_delim||']+', 1, level)) is not null
  connect by regexp_substr(p_str, '[^'||p_delim||']+', 1, level) is not null;    
return v2_t;       
exception
when others then
    raise_application_error(-20000, dis_sys.dis_message_util.get_message(msgCOMMON_EXCEPTION, 'dis_pltec.util_dm.Str2Varchar2Table', chr(10) || dbms_utility.format_error_stack || dbms_utility.format_error_backtrace));  
end; 



Вариант нормер два, яваскриптом собирать XML и парсить XML средствами оракла, возни больше но и возможностей больше.

Вариант номер три - Собрать яваскриптом json а на оракле пасить пакетом http://sourceforge.net/projects/pljson/.

Минус - Нужно доустанавливать пакет, плюс - Json проще в понимании чем XML
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Несколько значений в одном текстовом поле (apex_collections?)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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