Последняя версия DataExpress 3 beta от 11 августа 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Проверка на уникальность: Наталья и Наталия

Вопросы, связанные с конструктором приложений баз данных DataExpress.
Виталий1990
Интересующийся
Сообщения: 244
Зарегистрирован: Сб июл 15, 2017 3:08 pm
Откуда: Санкт-Петербург

Проверка на уникальность: Наталья и Наталия

Сообщение Виталий1990 » Чт авг 09, 2018 4:40 pm

База данных учащихся. Форма "Картотека".
Компоненты "Список" - 3 штуки: "Фамилия", "Имя", "Отчество",
Компонент "Текст" - ФИО (склейка предыдущих),
Компонент "Дата" - Дата рождения.

Код: Выделить всё

IIF(DBUNIQUE('фамилия;имя;отчество;дата рождения')=0, 'Такой человек уже есть в базе', '')


Поскольку указанные в примере имена Наталья и Наталия условно взаимозаменяемы, то проверка на уникальность может дать сбой, если Иванову Наталью Юрьевну повторно вбить как Наталию.

Можно ли как-то оформить проверку на уникальность с условием вроде "Если [Имя]='Наталия', то... сравнить с Наталья".

То есть если уже есть "Иванова Наталья Юрьевна, 07.11.1990", то при добавлении "Иванова Наталия Юрьевна, 07.11.1990" будет выведено сообщение MSG, что "Возможно, такой человек уже есть в базе".

Lapusik
Новичок
Сообщения: 45
Зарегистрирован: Чт июл 12, 2018 3:59 pm

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Lapusik » Чт авг 09, 2018 5:06 pm

Можно на форме отобразить кнопку, с дальнейшим вариантом выбора "да" или "нет" и по её нажатию сделать проверку по фамилии, отчеству, дате рождения. По имени проверку опустить. Есть имена типа Елизавета и Лиза. А так же учесть, что дата может быть пустой и тогда решить является ли оно обязательным полем для ввода. Можно так же добавить поле "пол" и его тоже добавить на проверку.
Алгоритм "Если" полагаю должен сработать.

Виталий1990
Интересующийся
Сообщения: 244
Зарегистрирован: Сб июл 15, 2017 3:08 pm
Откуда: Санкт-Петербург

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Виталий1990 » Чт авг 09, 2018 5:31 pm

Решил проблему добавлением поля "Имя-2", которое дублирует основное имя, но заменяет имя "Наталия" на "Наталья" и усложнил проверку:

Код: Выделить всё

IIF([Имя]='Наталия',
IIF(DBUNIQUE('фамилия;имя-2;отчество;дата рождения')=0, 'Такой человек уже есть в базе', '')
IIF(DBUNIQUE('фамилия;имя;отчество;дата рождения')=0, 'Такой человек уже есть в базе', '')


То есть независимо от варианта имени получается сравнение типа "Иванова Наталья Петровна" с "Иванова Наталья Петровна".

Виталий1990
Интересующийся
Сообщения: 244
Зарегистрирован: Сб июл 15, 2017 3:08 pm
Откуда: Санкт-Петербург

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Виталий1990 » Чт авг 09, 2018 5:34 pm

Lapusik писал(а):По имени проверку опустить. Есть имена типа Елизавета и Лиза.

Обычно проблем с таким типом имён не встречалось, только с Натальей. В целом можно адаптировать вариант, который я написал выше.

Lapusik писал(а): А так же учесть, что дата может быть пустой и тогда решить является ли оно обязательным полем для ввода. Можно так же добавить поле "пол" и его тоже добавить на проверку.
Алгоритм "Если" полагаю должен сработать.


Обычно всегда есть или дата рождения, или хотя бы год. Поэтому проверка идёт в зависимости от ситуации.

Аватара пользователя
Гocть
Знаток
Сообщения: 646
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Гocть » Чт авг 09, 2018 5:36 pm

О нереальных вещах вы говорите. Попробуйте выражение например:

Код: Выделить всё

iif('Наталья'='Нaталья',
msgbox('','Все правильно. Наталья=Наталья'),
msgbox('','Неправильно. Наталья<>Наталья. Вопрос почему?')
)

Программа призвана ускорить работу а от нее хотят, чтобы она сделала всю работу сама. Есть повороты, в которых все таки должен участвовать человеческий мозг. Ну и дисциплина.
Фрилансер. Разработка на заказ. Консультирование.

Виталий1990
Интересующийся
Сообщения: 244
Зарегистрирован: Сб июл 15, 2017 3:08 pm
Откуда: Санкт-Петербург

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Виталий1990 » Чт авг 09, 2018 5:47 pm

Гость, дело в том, что я-то без проблем могу вбивать одну Наталью. Однако!
После сдачи БД может случиться так, что оператор, работающий с базой, вобьёт "Иванову Наталью Петровну" как Наталию, т.к. ему не сообщили, что любую Наташу нужно вбивать строго как Наталью. Потому и приходится искать пути решения. Найдётся более простой вариант - упрощу без проблем.

jurist23rus
Эксперт
Сообщения: 2262
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Проверка на уникальность: Наталья и Наталия

Сообщение jurist23rus » Чт авг 09, 2018 6:01 pm

Виталий1990 писал(а):Найдётся более простой вариант - упрощу без проблем.

Более простой вариант в DBUnique не проверять поле имя, только фамилию отчество и дату. И в базе никогда не появится Наталья и Наталия с одинаковыми анкетными данными.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
Гocть
Знаток
Сообщения: 646
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: Проверка на уникальность: Наталья и Наталия

Сообщение Гocть » Чт авг 09, 2018 6:12 pm

jurist23rus писал(а):Более простой вариант в DBUnique не проверять поле имя, только фамилию отчество и дату.

И что? Мало ли созвучных фамилий отчеств и одинаковых дат? Это не вариант.
Случай из жизни (так уж и быть расскажу). Я разводился с 1й супругой. Мне в загсе сказали: "у вас место рождения в св-ве имеет разночтение с паспортом" (самое смешное что в паспорте неправильно, а в св-ве правильно). В итоге я оказался крайним (мои глаза проверяли введенные данные, и моя рука ставила подпись под тем, что написали слишком умные и чрезмерно инициативные работники ЭТОГО ЖЕ загса за 5 лет до инцидента) и пришлось "запускать процесс" через суд.
Мораль: если это вас не трогает (выговоры, штрафы, или боже упаси тюрьма), то просто не заморачивайтесь.
Фрилансер. Разработка на заказ. Консультирование.