Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Маска ввода  [new]
almaz85
Member

Откуда: москва
Сообщений: 299
Всем приветик :)

Такая вот проблемка.
Есть форма на ней поля телефоны
В базе уже порядка 7000 записей с телефоном, естественно он забит по-разному.
варианты (888-8888, 0000000, 999-99-99, ну еще бывают всякие значки типа *, м., ф.,) вот, но теперь борьба с такими форматами пришла к тому, что хочется хранить одни цифры (8888888) а выдавать на форме такой вид 888-8888

я знаю что есть такой инструмент как маска ввода, но в мастеер маски ввода только маски на время, дату...
а как сделать без мастера... непонятно...
прошу помощи :)
как сделать ?
16 май 06, 09:56    [2667656]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Андрей74
Member

Откуда: Магнитогорск
Сообщений: 121
А нажать F1 не судьба ???
Там описано конкретно для ввода телефонного номера
16 май 06, 10:14    [2667741]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
almaz85
Member

Откуда: москва
Сообщений: 299
Андрей74
А нажать F1 не судьба ???
Там описано конкретно для ввода телефонного номера

там все на английском, а перевод в переводчиках совсем не понятный :(
16 май 06, 10:16    [2667747]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Valery_Muhin
Member

Откуда: Санкт-Петербург
Сообщений: 24
Достаточно ввести в свойствах поля на закладке Данные в строке Маска ввода такую строку ###-####
И это позволит вводить только цифры и только в виде 123-4567
причем хранится они будут естественно без дефиса. Пробуйте !
16 май 06, 10:17    [2667750]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16825
Увы, программирование все-таки предполагает постояное чтение встроенных подсказок. Часто советуют использовать русский хелп от 97 аксеса.
16 май 06, 10:18    [2667756]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Андрей74
Member

Откуда: Магнитогорск
Сообщений: 121
almaz85
Андрей74
А нажать F1 не судьба ???
Там описано конкретно для ввода телефонного номера

там все на английском, а перевод в переводчиках совсем не понятный :(


Тогда приношу извинения :)
Для неимеющих руского хелпа:

Свойство «Маска ввода» (InputMask)
Свойство Маска ввода (InputMask) облегчает ввод данных и определяет значения, которые можно ввести в элемент управления поле. String, чтение/запись.

выражение.InputMask

выражение   Обязательное. Выражение, возвращающее один из объектов в списке «Применение».

Заметки
Маски ввода удобно использовать для операций ввода данных, например маска ввода для поля «Телефоны», точно показывает, в каком формате вводить новый телефон: (___) ___-____. Чтобы задать данное свойство, обычно, проще использовать мастер по созданию масок.

Значение свойства Маска ввода (InputMask) может содержать до трех разделов, разделенных точкой с запятой (;).

Раздел Описание 
Первый Представляет саму маску ввода (например, !(999) 000-0000). Перечень знаков, используемых для определения масок ввода, приводится ниже в таблице. 
Второй Определяет режим занесения в таблицу текстовых констант, добавляемых к знакам, вводящимся пользователем. 0 в данном компоненте указывает, что текстовые константы (например, скобки и дефисы в маске ввода телефонных номеров) сохраняются вместе с введенными пользователем значениями; значение 1 или пустое значение данного раздела указывает, что сохраняются только знаки, введенные пользователем. 
Третий Определяет знак, используемый для изображения пустых позиций в маске ввода, в которые помещаются вводящиеся пользователем знаки. В этом разделе можно указать любой знак; чтобы отобразить пустую строку, введите пробел, заключенный в кавычки (" "). 


В программе Microsoft Visual Basic значение данного свойства задается при помощи строкового выражения. Например, следующая инструкция для поля определяет маску ввода для телефонных номеров:

Forms!Customers!Telephone.InputMask = "(###) ###-####"
При создании маски ввода можно использовать специальные знаки, показывающие что текущие данные нужно обязательно ввести (например, региональный код для телефонных номеров), а другие данные являются необязательными (например, добавочный номер телефона). Эти знаки определяют тип данных, например число или знак, которые необходимо ввести для каждого знака маски ввода.

С помощью следующих знаков можно определить маску ввода.

Символ Описание 
0 Цифра (0-9, обязательный знак; знаки (+) и (-) не разрешены). 
9 Цифра или пробел (необязательный знак; знаки (+) и (-) не разрешены). 
# Цифра или пробел (необязательный знак; незаполненные позиции выводятся как пробелы в режиме редактирования, но удаляются при сохранении данных; знаки (+) и (-) не разрешены). 
L Буква (от А до Я, обязательный знак). 
? Буква (от А до Я, необязательный знак). 
A Буква или цифра (обязательный знак). 
a Буква или цифра (необязательный знак). 
& Любой знак или пробел (обязательный знак). 
C Любой знак или пробел (необязательный знак). 
. , : ; - / Десятичный разделитель, разделители групп разрядов, времени или даты. (Используемые знаки разделителей определяются настройками, выбранными на панели управления Microsoft Windows в диалоговом окне Язык и стандарты.) 
< Преобразует все знаки к нижнему регистру. 
> Преобразует все знаки к верхнему регистру. 
! Указывает заполнение маски ввода справа налево, а не слева направо. Заполнение маски знаками всегда происходит слева направо. Восклицательный знак в маске ввода можно помещать в любую позицию. 
\ Указывает, что следующий знак будет отображаться как текстовая константа (например, \A отображается как «A»). 

Примечание.   Значение «Пароль» свойства Маска ввода (InputMask) создает элемент управления, предназначенный для ввода пароля. Любые знаки, вводящиеся в этот элемент управления будут отображаться на экране звездочками (*). Подобная маска ввода используется для предотвращения вывода на экран вводящихся знаков.
Значение данного свойства элемента управления задается в его окне свойств. Для поля таблицы значение данного свойства задается в режиме конструктора таблицы (в области свойств поля) или в режиме конструктора окна запроса (в окне свойств поля).

Кроме того, значение свойства Маска ввода (InputMask) можно задать в макросе или в программе Microsoft Visual Basic.

При вводе данных в поле, для которого определена маска ввода, всегда используется режим замены. При удалении знака путем нажатия клавиши BACKSPACE знак заменяется на пробел.

При копировании или перемещении содержимого поля, для которого определена маска ввода, в буфер обмена текстовые константы маски копируются вне зависимости от режима их сохранения.

Примечание.   Маска ввода используется только при вводе знаков в элемент управления или в поле со списком с клавиатуры и игнорируется при всех остальных операциях. Например, при импорте данных, при выполнении запроса на изменение, а также при вводе знаков в элемент управления с помощью конструкции Microsoft Visual Basic, в которой задается значение свойства Text элемента управления, или при выполнении макрокоманды Задать значение (SetValue) в макросе.

Если определена маска ввода и одновременно задано для того же поля значение свойства Формат поля (Format), то при выводе данных приоритет имеет свойство Формат поля (Format). Это означает, что при форматировании данных сохраненная маска ввода игнорируется. Данные в базовой таблице при этом не изменяются; свойство Формат поля (Format) определяет только режим отображения данных.
16 май 06, 10:24    [2667813]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
almaz85
Member

Откуда: москва
Сообщений: 299
Огромное спасибо за понимание...

и за такой подробный хелп...
16 май 06, 10:32    [2667871]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Маска ввода  [new]
Upgrader
Member

Откуда:
Сообщений: 174
Неожиданная проблема.
Маска ввода 00.00.9999;0;_ (да и другие варианты, не суть важно)

При вводе 10.10.20, получаем: 10.10.2020 Нормально.
Внезапно!
При вводе 10.10.30 получаем: 10.10.1930
Можно ли сделать, чтобы было изначально не 19хх, а 20хх?
11 фев 14, 13:57    [15551173]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Upgrader
Member

Откуда:
Сообщений: 174
Разобрался. Access ни при чём. Региональные настройки Windows: если год введен двумя цифрами, отображать как год между 1931 и 2030 (поставил 2050)
11 фев 14, 14:17    [15551306]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Маска ввода  [new]
Takaa
Member

Откуда:
Сообщений: 1
Помогите тоже с масками ввода. Есть форма, куда пользователи заполняют данные. Данные пишутся не вручную, а копируются из других источников. Пример: в источнике данные в наборе цифр, напримпер 123456, а хранить их надо в виде 1234х6.
Если задать маску 0000х0;0, то при вставки "123456" я буду получать такое: "1234х5". А надо "1234х6". Как можно решить данный вопрос?
9 окт 15, 09:38    [18256857]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Анатолий ( Киев )
Guest
Например на событии Cange поля:
s1 = Trim(Me![Поле].Text)
s2 = Left(s, Len(s)-2) & "x" & Right(s,1)
If s2 <> s1 Then Me![Поле].Value = s2
9 окт 15, 11:00    [18257403]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Маска ввода  [new]
Rikozenit
Member

Откуда:
Сообщений: 82
Здравствуйте!
В таблице есть текстовое поле ОБОЗНАЧЕНИЕ.
Через одну из форм в это поле с помощью маски ввода "АБВГ."###\.###\-## вносятся данные: АБВГ.087.000-14, АБВГ.088.000-15 и т.п., а через другую форму в это поле с помощью маски ввода "ТТ."##\.##\-# вносятся данные в виде ТТ.33.12-5.
И могут быть ещё 2-3 формы с другими масками на это поле.
НО в таблице-то хранятся только цифры! Букв из маски в таблице нет(
А как же тогда по этой таблице строить отчёт?
Спасибо!
11 июл 18, 11:45    [21561695]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Serg197311
Member

Откуда:
Сообщений: 54
Да как угодно....
хоть на поле отчета перед нужным полем надпись с нужным текстом поставить,
хоть при создании набора записей для отчета через SQL прилепить нужный текст к нужному полю......
11 июл 18, 14:47    [21562735]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Serg197311
Member

Откуда:
Сообщений: 54
А текст, который нужно вставить - определить через пользовательскую функцию - анализируя значение в коде как текстовую переменную...
11 июл 18, 14:55    [21562773]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Rikozenit
Member

Откуда:
Сообщений: 82
Serg197311,
просто получается, что данные о буквенном префиксе вообще нигде не хранятся? Они в таблицу же не попадают! И только отображаются в формах.
11 июл 18, 16:13    [21563155]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
Serg197311
Member

Откуда:
Сообщений: 54
Rikozenit
Serg197311,
просто получается, что данные о буквенном префиксе вообще нигде не хранятся? Они в таблицу же не попадают! И только отображаются в формах.
Ну это как раз вам виднее- как они хранятся.... мы то это только с ваших слов знаем...
Если там и правда просто цифры, да еще одного порядка - то разделить их имхо никак не выйдет.... Если там все-таки текст, с точками или еще какими разделительными символами - то должно получится...
11 июл 18, 17:03    [21563386]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 227
в маске литералы нужно обозначить обратным слэшем "\А\Б\В\Г...
11 июл 18, 19:28    [21563833]     Ответить | Цитировать Сообщить модератору
 Re: Маска ввода  [new]
court
Member

Откуда:
Сообщений: 3512
Rikozenit
Serg197311,
просто получается, что данные о буквенном префиксе вообще нигде не хранятся? Они в таблицу же не попадают! И только отображаются в формах.
Выше, в топике, который ты и продолжил

2667813
автор
Значение свойства Маска ввода (InputMask) может содержать до трех разделов, разделенных точкой с запятой (;).

Раздел Описание
Первый Представляет саму маску ввода (например, !(999) 000-0000). Перечень знаков, используемых для определения масок ввода, приводится ниже в таблице.
Второй Определяет режим занесения в таблицу текстовых констант, добавляемых к знакам, вводящимся пользователем. 0 в данном компоненте указывает, что текстовые константы (например, скобки и дефисы в маске ввода телефонных номеров) сохраняются вместе с введенными пользователем значениями; значение 1 или пустое значение данного раздела указывает, что сохраняются только знаки, введенные пользователем.
Третий Определяет знак, используемый для изображения пустых позиций в маске ввода, в которые помещаются вводящиеся пользователем знаки. В этом разделе можно указать любой знак; чтобы отобразить пустую строку, введите пробел, заключенный в кавычки (" ").
12 июл 18, 09:38    [21564884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить