• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Multivalue Dialoglist И Заяпятые

dimat

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

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

Как это обойти?
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Gandliar
Поясните пожалуйста, как это применить?
 
S

Serduko

Если нужно одно значение, вероятно так:
@Implode(@dbcolumn("":"ReCache";@servername:"References.nsf";"viewname";3));",");

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

Функция обьединяет массив в строку.
 
O

Omh

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

dimat

Well-known member
31.07.2008
508
0
BIT
0
Функция обьединяет массив в строку.
Получается и в поле он вставиться как строка?

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)="Сбор, очистка и распределение воды"
 
O

Omh

Ну так выпили запятую из списка мултивелью сепаратаров и воцарится мир во всём мире!
Я гарантирую это!

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

TIA

Универсальное решение и для списков и одиночых значений:

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

Значение PSEUDO_COMMA - это символ, выглядящий, как запятая, но таким не являющийся. Его код 130. DialogBox не будет разделять на несколько значений по такой псевдо-запятой.
Результат выбора в диалоге надо подвергнуть обратному преобразованию:
@ReplaceSubString(Selected;PSEUDO_COMMA;",");
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Что бы его убрать, кликни ещё раз на comma, только перед этим выбери ещё один другой.
На мой взягляд самый предпочтительный- New Line, хотя это, конечно, зависит от дизайна приложения.
Дык не убирается он, при сохранении формы все равно ставится comma+new line, которую выбрал вместо comma
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
TIA
У меня @char(130), выдает букву е с палкой наверху:)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!