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