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

Откуда: Челябинск
Сообщений: 8
Добрый вечер, коллеги!
Создаю БД для учебного заведения.
Прототип делаю в Access, но с перспективой переезда на MS SQL сервер.
Возникла проблема - в текстовом поле описания профессии применяются русские буквы, знаки препинания и ДВОЙНЫЕ КАВЫЧКИ.
Проблему русских букв и знаков пунктуации решил выражением Not Like "*[!0-9 а-я,.; :]*" в Validation rules поля таблицы.
Проблему кавычек никак не могу решить, как разрешить ввод символа "?
Если экранирую символ " аналогичными, access ругается на синтаксис строки проверки.
Была мысль заменить двойные кавычки одинарными - руководитель против.
Как можно разрешить ввод двойных кавычек в поле таблицы?
Ограничение надо установить на уровне столбца таблицы, т.к. неизвестно, на каком языке будет написан интерфейс к БД.
13 янв 20, 18:01    [22058169]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19875
Вот так:
Like "[0-9 а-я!,.;:""]*"


К сообщению приложен файл. Размер - 3Kb


Сообщение было отредактировано: 13 янв 20, 21:45
13 янв 20, 21:43    [22058319]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
edward_sh
Member

Откуда: Челябинск
Сообщений: 8
Спасибо, Akina за ответ.
Самое интересное, что пытался проделать то же самое ранее. Но, видимо, звезды не так расположились ...
Сжал БД и повторил еще раз - все получилось.
Теперь возник другой вопрос - кавычек бывает несколько типов ", «, верхние и нижние и т.д. Осталось решить, как при копи-пасте защититься от них и приводить все к единому знаменателю.
Еще раз спасибо за ответ!
14 янв 20, 07:24    [22058460]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
edward_sh
Member

Откуда: Челябинск
Сообщений: 8
Столкнулся с еще одной проблемой в этом выражении.
Надо было добавить знак тире -
Access упорно ругался на него, решилось заключением символа тире в квадратные скобки [-].
Видимо, access считал этот символ как указатель множества. А заключение его в квадратные скобки экранировало его.
14 янв 20, 08:03    [22058466]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
edward_sh
Member

Откуда: Челябинск
Сообщений: 8
Не получился фокус :(
После этого стали пролезать английские буквы.
Пока решилось перемещение тире в самую последнюю позицию. Итоговый вариант стал
Not Like "*[!0-9а-я, :""-]*"
Теперь осталось научиться писать многострочные сообщения об ошибках типа:
"Введен неверный символ"
"Допускаются символы (такие-то)"
14 янв 20, 08:26    [22058477]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19875
Тире в маске - служебный символ диапазона (Вы же его используете!). Так что помещение его в конец списка допустимых символов - самое простое из правильных решений.
edward_sh
кавычек бывает несколько типов ", «, верхние и нижние и т.д.
Ну их придётся разрешить - внести в список допустимых символов. А уже после ввода - выполнять нормализацию (тупо Replace).
14 янв 20, 09:56    [22058537]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19875
edward_sh
осталось научиться писать многострочные сообщения об ошибках типа:
"Введен неверный символ"
"Допускаются символы (такие-то)"


MsgBox "Введен неверный символ" & vbNewLine & "Допускаются символы (такие-то)"
14 янв 20, 09:56    [22058539]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
Alibek B.
Member

Откуда:
Сообщений: 3415
edward_sh
А заключение его в квадратные скобки экранировало его.

Нет. Если нужно указать символ "дефис", то он должен быть в первой позиции внутри квадратных скобок. В остальных местах он будет указывать на диапазон.
14 янв 20, 10:02    [22058547]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
vmag
Member

Откуда: MP
Сообщений: 3436
Что-то я не догоняю этот топик от слова совсем...
edward_sh
Возникла проблема - в текстовом поле описания профессии применяются русские буквы, знаки препинания и ДВОЙНЫЕ КАВЫЧКИ.


По моему, если вообще ничего не делать, то в текстовое поле можно ввести что угодно, причем если кавычки вводить руками, то они будут однотипные, зачем все эти лайки, условия и т.д. ?
Ну я бы еще понял, если бы нужно было что-то запретить к вводу, например английский шрифт - дак и то проще на поле установить язык ввода русский и всё...

Так со стороны посмотреть, то задача стоит типа нужно написать условия, которые позволят ввести всё что угодно, так может их и писать не нужно эти условия?
14 янв 20, 11:05    [22058601]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19875
vmag, да видишь - товарищ пытается сформировать CHECK CONSTRAINT на поле для применения на MS SQL, причём смоделировать это средствами Access. Если бы он делал как все - ввод исключительно через формы,- так и вопроса бы не возникло, там через Validate можно слона протащить.
14 янв 20, 12:06    [22058658]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
vmag
Member

Откуда: MP
Сообщений: 3436
Akina,

Мдя... имхо сначала нужно сделать рабочий макет, оттестировать его вдоль и поперек, а потом уже делать защиту от дураков и прочие мелочи, причем делать это лучше уже на реальной связке БД-Интерфейс... а так похоже на балансировку колес при отсутствии автомобиля...
14 янв 20, 12:32    [22058693]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
edward_sh
Member

Откуда: Челябинск
Сообщений: 8
vmag, Так я и делаю рабочий макет :)
Те, кто сразу не думает о защите от дураков, потом долго и нудно латает код.
Проще сразу в макете сказать что тебе надо, а от остального защищаться кодом.

To Akina про MsgBox я знаю, мне было интересно вывести стандартными средствами вывода ошибок
Accessa из строки Ошибки на значения (Validation Text).
Просто текстовое сообщение вытягивается некрасиво.
Но походу этого сделать нельзя...
14 янв 20, 16:53    [22059037]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
__Michelle
Member

Откуда:
Сообщений: 3137
edward_sh
....мне было интересно вывести стандартными средствами вывода ошибок Accessa из строки Ошибки на значения (Validation Text).
Просто текстовое сообщение вытягивается некрасиво.
Но походу этого сделать нельзя...

Отчего же нельзя?

Введите в ValidationText то, что нужно - хоть в две, хоть в пять, хоть в семь строк.
Перевод строки - Ctrl-Enter.
Или сформируйте многострочный текст в окне Область ввода (вызывается Shift-F2).
14 янв 20, 17:40    [22059076]     Ответить | Цитировать Сообщить модератору
 Re: Знаки пунктуации в условии на значение  [new]
edward_sh
Member

Откуда: Челябинск
Сообщений: 8
__Michelle,
Спасибо, Ctrl+Enter сработало! А Shift+F2 в конструкторе таблиц у меня не сработал ... Ну и ладно!
14 янв 20, 18:12    [22059120]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить