Multivalue Dialoglist И Заяпятые

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#1
Всем привет!

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

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

Gandliar

Well-Known Member
Lotus team
16.02.2004
326
6
44
Минск
jobber.by
#2
Всем привет!

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

Как это обойти?
@Implode(...
 

Serduko

Well-Known Member
11.10.2011
170
0
#4
Если нужно одно значение, вероятно так:
@Implode(@dbcolumn("":"ReCache";@servername:"References.nsf";"viewname";3));",");

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

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

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#5
dimat
А что там в поле с мультивелью сепаратораом?
Если поле не мултивелью, попробуй пересоздай поле с нуля.
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#6
Функция обьединяет массив в строку.
Получается и в поле он вставиться как строка?

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

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#7
Ну так выпили запятую из списка мултивелью сепаратаров и воцарится мир во всём мире!
Я гарантирую это!

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

TIA

:-)
Lotus team
15.05.2009
790
1
#8
Универсальное решение и для списков и одиночых значений:

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
Lotus team
31.07.2008
516
0
31
Киров
#9
Что бы его убрать, кликни ещё раз на comma, только перед этим выбери ещё один другой.
На мой взягляд самый предпочтительный- New Line, хотя это, конечно, зависит от дизайна приложения.
Дык не убирается он, при сохранении формы все равно ставится comma+new line, которую выбрал вместо comma