Найти в Дзене
ITэ и ТэДэ

ИСУБД CronosPRO, мой подход к работе. №3 Поиск совпадений при сохранении.

Сохранение новой записи в базу данных начинается с проверки на совпадения с существующими. Проверять буду по сравнению похожести Фамилии, Имени и Отчества. Для этого и подойдёт поле БД "Лицо ищущее работу" - "ФИО целиком" которое я добавил в первой части. Если интересно, подписываемся, читаем, Вам не сложно, нам в копилку :) Предыдущая статья: Весь механизм проверки реализует функция Verification(). Сначала формирую поисковое значение из текстовых полей Name1Txt, Name2Txt и Name3Txt. Удаляю при этом возможные лишние пробелы, вдруг ФИО не полное. Далее вызываю строковый запрос к БД "Лицо ищущее работу" с видом сравнения "похожесть". Текст строкового запроса можно подсмотреть через форму Сложного запроса. Создать запрос и нажать кнопку "Строчная запись". Если поисковое значение - одно слово, в запросе пишется просто так, если несколько, то надо обернуть в `одинарные кавычки`! Или к одному слову добавить пробел и также обернуть в кавычки 😉. Если запрос вернул зап

Сохранение новой записи в базу данных начинается с проверки на совпадения с существующими. Проверять буду по сравнению похожести Фамилии, Имени и Отчества. Для этого и подойдёт поле БД "Лицо ищущее работу" - "ФИО целиком" которое я добавил в первой части.

Если интересно, подписываемся, читаем, Вам не сложно, нам в копилку :) Предыдущая статья:

Весь механизм проверки реализует функция Verification(). Сначала формирую поисковое значение из текстовых полей Name1Txt, Name2Txt и Name3Txt. Удаляю при этом возможные лишние пробелы, вдруг ФИО не полное. Далее вызываю строковый запрос к БД "Лицо ищущее работу" с видом сравнения "похожесть".

рис.1 фрагмент листинга
рис.1 фрагмент листинга

Текст строкового запроса можно подсмотреть через форму Сложного запроса. Создать запрос и нажать кнопку "Строчная запись".

Если поисковое значение - одно слово, в запросе пишется просто так, если несколько, то надо обернуть в `одинарные кавычки`! Или к одному слову добавить пробел и также обернуть в кавычки 😉.

Если запрос вернул записи, надо показать их пользователю для выбора действия. Поэтому создаю новую управляющую форму, назову "Проверочная". Тип границы -> "Окно диалога", модальная, отцентрирована. На форме набор компонентов:
Надпись - для пояснения;
Список - для отображения списка похожих записей;
Кнопки - для выбора действия.

рис.3 Форма "Проверочная" в редакторе.
рис.3 Форма "Проверочная" в редакторе.

При вызове формы из другой формы, в нее передается массив значений который доступен через переменную "Arg". Набор найденных записей передам через значение Arg.tbl. Соответствие системных номеров записей и индексов в списке отображения хранятся в переменной ItemList_to_idx которая формируется при добавлении значений в список. При отсутствии переменной "Arg" форма не запускается. При отсутствии или не табличном параметре Arg.tbl - закрывается с сообщением об ошибке и кодом возврата - отмена.

рис.4 Фрагмент листинга
рис.4 Фрагмент листинга

В обработчиках событий кнопок устанавливается код возврата в переменную Arg.result и закрывается форма. При нажатии кнопки "Выбрать" по индексу выбранного элемента списка из переменной ItemList_to_idx получаем системный номер нужной записи и передаем как код возврата.

рис.5 Фрагмент листинга
рис.5 Фрагмент листинга

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

В следующей статье рассмотрю работу со словарными полями.

Обновленный листинг формы "Данные на лицо"
Листинг формы "Проверочная"

Копия обновленной формы "Данные на Лицо".
Копия формы "Проверочная".
Полная копия базы Primer1.