• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Multivalue Dialoglist И Заяпятые

  • Автор темы Автор темы dimat
  • Дата начала Дата начала

dimat

Well-known member
31.07.2008
508
0
Всем привет!

При выборе значений в поле DialogList (use formula for choise: @dbcolumn("":"ReCache";@servername:"References.nsf";"viewname";3)), если значение содержит запятые, оно разделяется на несколько значений.

Как это обойти?
 
Gandliar
Поясните пожалуйста, как это применить?
 
Если нужно одно значение, вероятно так:
@Implode(@dbcolumn("":"ReCache";@servername:"References.nsf";"viewname";3));",");

если нет то вставляем @Implode в колонку 3 в viewname

Функция обьединяет массив в строку.
 
dimat
А что там в поле с мультивелью сепаратораом?
Если поле не мултивелью, попробуй пересоздай поле с нуля.
 
Функция обьединяет массив в строку.
Получается и в поле он вставиться как строка?

Omh
Поле MultiValue, сепаратор запятая.( если ставить другой сепаратор, то ставится другой + запятая).

Еще раз поясню свою проблему на примере:

Указанной формулой открыается диалог выбора, в нем варианты:
- Деятельность, связанная с использованием ВТ
- Строительство
- Сбор, очистка и распределение воды
- Транспорт и связь
- Образование
- Аренда торговых площадей, эксплуатация зданий и сооружений

выбираем след. варианты:
- Деятельность, связанная с использованием ВТ
- Строительство
- Сбор, очистка и распределение воды

В итоге:
doc.getitemvalue("FieldName")(0)="Деятельность"
doc.getitemvalue("FieldName")(1)="связанная с использованием ВТ"
doc.getitemvalue("FieldName")(2)="Строительство"
doc.getitemvalue("FieldName")(3)="Сбор"
doc.getitemvalue("FieldName")(4)="очистка и распределение воды"

А надо:
doc.getitemvalue("FieldName")(0)="Деятельность, связанная с использованием ВТ"
doc.getitemvalue("FieldName")(1)="Строительство"
doc.getitemvalue("FieldName")(2)="Сбор, очистка и распределение воды"
 
Ну так выпили запятую из списка мултивелью сепаратаров и воцарится мир во всём мире!
Я гарантирую это!

Что бы его убрать, кликни ещё раз на comma, только перед этим выбери ещё один другой.
На мой взягляд самый предпочтительный- New Line, хотя это, конечно, зависит от дизайна приложения.
 
Универсальное решение и для списков и одиночых значений:

a:=@dbcolumn("":"ReCache";@servername:"References.nsf";"viewname";3));
PSEUDO_COMMA:="‚";
@ReplaceSubString(a;",";PSEUDO_COMMA);

Значение PSEUDO_COMMA - это символ, выглядящий, как запятая, но таким не являющийся. Его код 130. DialogBox не будет разделять на несколько значений по такой псевдо-запятой.
Результат выбора в диалоге надо подвергнуть обратному преобразованию:
@ReplaceSubString(Selected;PSEUDO_COMMA;",");
 
Что бы его убрать, кликни ещё раз на comma, только перед этим выбери ещё один другой.
На мой взягляд самый предпочтительный- New Line, хотя это, конечно, зависит от дизайна приложения.
Дык не убирается он, при сохранении формы все равно ставится comma+new line, которую выбрал вместо comma
 
TIA
У меня @char(130), выдает букву е с палкой наверху:)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab