|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.02.2009, 15:02 | #1 |
Пользователь
Регистрация: 23.02.2009
Сообщений: 28
|
Проверка строки на правильность данных
Всем привет!
Такая проблемка: Нужно сделать такую проверку на правильность перед вставкой данных из формы в таблицу (добавляться должно Ф.И.О): 1. Строка должна состоять из русских букв, "-" (для двойных фамилий) и ' (для фамилий типа Д'Артаньян) 2. Фамилия Имя Отчество должны быть разделены 1 пробелом и начинаться с заглавной буквы. Как сделать проверку на соответствие моим требованиям максимально компактной, а то тупой перебор с помощью команд типа: If CStr(fio.Text) Like "*[A-Z]*" не есть гут. Прошу помощи, у самого уже моск кипит
Люди, слушайте голос разума...
|
28.02.2009, 15:18 | #2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Нужно использовать регулярные выражения.
Как? Здесь написано. В вашем случае строка должна соответсвовать чему-то такому <[А-ЯЁ][а-яё]@> — это шаблон для фамилии. <[А-ЯЁ][а-яё]@>-<[А-ЯЁ][а-яё]@> — это для фамилии с дефисом <[А-ЯЁ][а-яё]@> — это для имени и отчества. Общий шаблон такой <[А-ЯЁ][а-яё]@>^0032{1}<[А-ЯЁ][а-яё]@>^0032{1}<[А-ЯЁ][а-яё]@> Т.е. фамилия, имя, отчество через один пробел. Все слова должны быть с большой буквы. Что непонятно, спрашивай.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 28.02.2009 в 15:36. Причина: Исправил шаблоны, погорячился маленько. |
28.02.2009, 15:33 | #3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Добавьте в код формы такой код:
Код:
Кроме того, код автоматически вырезает повторяющиеся пробелы из поля, и делает заглавными первые буквы всех слов в поле. PS: В фамилиях и именах могут содержаться цифры и спецсимволы - ЗАГСы уже давно начали регистрировать имена типа 123@mail.ru |
28.02.2009, 15:53 | #4 |
Пользователь
Регистрация: 23.02.2009
Сообщений: 28
|
Всем спасибо!
to viter.alex: реально незнал что в vba есть регулярные выражения! полезная инфа. to EducatedFool: код работает, но можно для новичка немного пояснений по принципу работу процедур?
Люди, слушайте голос разума...
|
28.02.2009, 16:17 | #5 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Немного комментариев:
Код:
|
28.02.2009, 16:20 | #6 |
Пользователь
Регистрация: 23.02.2009
Сообщений: 28
|
Огромное тебе, человеческое спасибо!
Люди, слушайте голос разума...
|
28.02.2009, 16:21 | #7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Я немного погорячился. Те шаблоны, это шаблоны поиска в Word. Для RegEx это немного сложнее, но тоже решаемо. Например, вот так. Я пока не сообразил, как это сделать через одно выражение.
Код:
Лучше день потерять — потом за пять минут долететь!©
|
28.02.2009, 16:27 | #8 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
2EducatedFool. А букву сделать прописной после апострофа или дефиса?
Ограничить это хорошо. Как я сразу не додумался? Да еще и запретить вводить более двух пробелов. Хотя если будет какой-нибудь Бюль-Бюль Оглы или Хосе Игнасио, то он обидется.
Лучше день потерять — потом за пять минут долететь!©
|
28.02.2009, 16:33 | #9 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Например, такую: Код:
Цитата:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.02.2009 в 16:45. |
||
28.02.2009, 16:37 | #10 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Я имел ввиду более 2-х пробелов в строке
Лучше день потерять — потом за пять минут долететь!©
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверка введенных данных | Elm0 | Общие вопросы Delphi | 4 | 19.12.2008 19:00 |
Проверка повторяемости данных | Arteom | Общие вопросы Delphi | 4 | 11.12.2008 12:02 |
C проверка размера строки | challengerr | Помощь студентам | 2 | 04.08.2008 12:50 |
Проверка строки матрицы на симметричность. | EVIL | Помощь студентам | 2 | 26.11.2007 23:23 |
Проверка на отсутствие данных в БД | Elena | БД в Delphi | 5 | 14.06.2007 16:10 |