маска ввода

  • Автор темы Sereja
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sereja

#1
нужно что бы при вводе номера , номер записывался через тире...т.е. вводишь в форме 1234567, а записывается 123-45-67
в аксесе есть реализация масок ввода, в лотусе или найти не могу или нет их(подскажи где искать и как делать?


с лотусом месяц только-(
 
A

allex

#2
Посмотри использование like или работу с регудярными выражениями

Ну или парси строку :whoareyou?:
 
A

amigolinx

#3
См. хелп "Format function". Работает по принципу:
Код:
ss = {1234567}
ss = Format(ss, {000-00-00})
 

Eugen

Well-known member
22.03.2012
177
0
#4
спрошу тут.

Есть текстовое поле INN с маской для ввода инн. На onchange висит

Код:
	Dim w As New NotesUIWorkspace
Dim doc As NotesDocument

Set doc=w.CurrentDocument.Document
doc.INN = Format(doc.INN(0), {000-000-000 00})
Есть скрытое поле innEQ. Нужно, чтобы в нем хранилось значение из поля INN но без пробелов и тире. Пробовал trim, но я так понимаю, он убирает только пробелы и только до и после. А как выкинуть все, что отлично от цифр?
 

savl

Lotus team
28.10.2011
2 131
102
#5
А так?
Код:
Dim w As New NotesUIWorkspace
Dim doc As NotesDocument

Set doc=w.CurrentDocument.Document
doc.innEQ = doc.INN(0)
doc.INN = Format(doc.INN(0), {000-000-000 00})
 

Eugen

Well-known member
22.03.2012
177
0
#6
Так я попробовал сделать с самого начала, когда начал разбираться, но там есть нюанс: если человек что то не так вбил в самом ИНН, он лезет туда править, может где то не там поставить пробел или тире и в итоге эти символы попадут в innEQ. А там должны быть только цифры...
 

savl

Lotus team
28.10.2011
2 131
102
#7
что-то не в себе совсем сегодня я ...
Если я еще не окончательно заболел, то:

ИНН это только цифры, можно проверить правильность ввода, если там не только цифры то слать сообщение "Введите цифры"
затем записать эти цифры в innEQ
и только потом сделать преобразование для INN
 

Eugen

Well-known member
22.03.2012
177
0
#8
Поле INN - это поле куда пользователь вводит значение, и вся приблуда с Format function только для красоты отображения. Поле innEQ - это для скоринга, оно будет отправляться вместе с другими данными в виде xml на веб сервис и в нем допустимы только цифры, без всяких красот.

Добавлено: Сейчас попробовал на Input Validation добавить проверку @IsNumber - получается замкнутый круг: ввожу цифры, потом Format function наводит "красоту" и Input Validation ругается(
 

savl

Lotus team
28.10.2011
2 131
102
#9
Ох... изменение введенных данных ради отображения...
Проще было бы сделать поле computed for display и отображать его в режиме чтения со всем форматированием, а в режиме редактирования реальную информацию... И проблем бы не было.
А теперь... Хм...

Либо поле Computed и код
res:=@ReplaceSubstring(INN;"-";" ");
res:=@implode(@trim(@explode(res;" "));"");
res

либо в LS
Код:
 dim macro as variant
macro = Evaluate({@implode(@trim(@explode(@ReplaceSubstring(INN;"-";" ");" "));"")},doc)
doc.InnEq = macro(0)
Вариант с полем проверил.
 

Eugen

Well-known member
22.03.2012
177
0
#11
Ох... изменение введенных данных ради отображения...
Проще было бы сделать поле computed for display и отображать его в режиме чтения со всем форматированием, а в режиме редактирования реальную информацию... И проблем бы не было.
А теперь... Хм...

Либо поле Computed и код
res:=@ReplaceSubstring(INN;"-";" ");
res:=@implode(@trim(@explode(res;" "));"");
res

либо в LS
Код:
 dim macro as variant
macro = Evaluate({@implode(@trim(@explode(@ReplaceSubstring(INN;"-";" ");" "));"")},doc)
doc.InnEq = macro(0)
Вариант с полем проверил.
Спасибо, все получилось.
 

yerke

Well-known member
28.08.2007
392
0
#12
На валидешне поля поставь ругань

@if(
@Matches(@ThisValue; "{0-9}{0-9}{0-9}{-}{0-9}{0-9}{-}{0-9}{0-9}");
@Succes;
@Failure("Ввидите ИНН в формате '000-00-00'!")
)
 
Статус
Закрыто для дальнейших ответов.