Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск в таблице из поля 2010 MS Access / 17 сообщений из 17, страница 1 из 1
11.06.2016, 19:11
    #39254742
saleksey67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Есть таблица с пациентами в которой есть поля:
-Фамилия
-Имя
-Отчество
-Дата приема
-Дата выписки

Нужно чтобы текстовое из формы искало по всем полям всевозможные комбинации.
Например, ввожу в поле: "Иван Иванович 02.15.2015" и получаю нужную строку в нижней части. Или ввожу 02.15.2015 и получаю всех поступивших и выписавшихся за дату 02.15.2015.

Сейчас это сделано через макрос и работает только по вводу только имени, только фамилии, только отчества и например если написать в поле "фамилию имя" то поиск покажется пустой результат

Что можно сделать чтобы доработать?

Тестовая база, форма q_filter
...
Рейтинг: 0 / 0
11.06.2016, 19:16
    #39254749
saleksey67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Формы: https://goo.gl/KQY7NP
Тестовые данные: https://goo.gl/CTmRnC
...
Рейтинг: 0 / 0
11.06.2016, 23:14
    #39254846
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
У меня дома Access 2003, accdb он не может открыть, поэтому не знаю, что и как у вас там сделано

Я бы сделал так:
- фамилию, имя и отчество показывал бы как одно поле, и для него сделал бы одно поле поиска
И тогда, чтобы найти всех ивановых, можно ввести в поле "иванов" и в запросе это будет выглядеть как - Like '*иванов*'
- для обеих дат я бы сделал два разных поля - затрудняюсь представить ситуацию, когда может потребоваться "полнотестовый поиск" одновременно для даты приёма и даты выписки

Такой запрос выберет из базы всех "ивановых" - иванов, иванова, иванович, ивановна и все прочие варианты содержащие в фполях фамилия, имя отчетство подстроку "иванов"

Код: sql
1.
2.
3.
SELECT t1.F & ' ' & t1.I & ' ' & t1.O AS FIO, t1.DP, t1.DV
FROM t1
WHERE (((t1.F & ' ' & t1.I & ' ' & t1.O) Like '*иванов*') AND ((t1.DP)=#1/1/2001#));
...
Рейтинг: 0 / 0
11.06.2016, 23:23
    #39254850
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Как я понимаю, разработка баз для вас пока(?) хобби?

Если у вас действительно в одной таблице хранится и информация о человеке и информация о приёме, то надо обязательно почитать про нормализацию баз данных.

Суть нормализации проста: одна сущность - одна таблица
Пациенты хранятся в таблице Пациенты - логично?
Информация о приёме у врача хранится в другой таблице - Прием

Это только поначалу разделение на отдельные таблицы кажется излишним усложнением, но потом такие "простые" таблицы, в которых свалены в одну кучу несколько сущностей, потребуют от вас переделки многих (или всех) форм, через которые вводятся данные, и аналогично будет и с отчётами.
...
Рейтинг: 0 / 0
12.06.2016, 01:13
    #39254876
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Аллюр Д.... Пациенты хранятся в таблице Пациенты ...
Стехи:

В таблице П - хранятся пациенты,
В таблице Д - хранятся доктора,
В таблице Л - кто носит лабутены,
В таблице Ш - кто в о*уительных штанах.

:)
...
Рейтинг: 0 / 0
13.06.2016, 19:31
    #39255303
saleksey67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Аллюр Д.,Такой запрос выберет из базы всех "ивановых" - иванов, иванова, иванович, ивановна и все прочие варианты содержащие в фполях фамилия, имя отчетство подстроку "иванов"

SELECT t1.F & ' ' & t1.I & ' ' & t1.O AS FIO, t1.DP, t1.DV
FROM t1
WHERE (((t1.F & ' ' & t1.I & ' ' & t1.O) Like '*иванов*') AND ((t1.DP)=#1/1/2001#));

Запрос выберет, но вопрос не в этом. Подробнее проблема в том что: если в строке поиска "Иван Иванов" или "Иван 24.04.2015", то такой запрос не справиться с задачей ... Как реализовать такой поиск.
Я работал с базами данных, так что это не хобби) Но проектировал базы только в институте и то для простейшего списка контактов + список пациентов не превышает 500 в год вот и решил пренебречь этими правилами :) 
Нормализацию сделаю, но вопрос не в этом.
...
Рейтинг: 0 / 0
13.06.2016, 19:45
    #39255309
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
saleksey67Есть таблица с пациентами в которой есть поля:
-Фамилия
-Имя
-Отчество
-Дата приема
-Дата выписки

Нужно чтобы текстовое из формы искало по всем полям всевозможные комбинации.
Например, ввожу в поле: "Иван Иванович 02.15.2015" и получаю нужную строку в нижней части. Или ввожу 02.15.2015 и получаю всех поступивших и выписавшихся за дату 02.15.2015.

Сейчас это сделано через макрос и работает только по вводу только имени, только фамилии, только отчества и например если написать в поле "фамилию имя" то поиск покажется пустой результат

Что можно сделать чтобы доработать?

Тестовая база, форма q_filterСделайте столько полей, задающих критерии поиска, сколько полей, по которым нужна фильтрация.
И формируйте составной критерий из непустых полей-критериев.
...
Рейтинг: 0 / 0
13.06.2016, 20:04
    #39255312
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
saleksey67,

пример на поиск в телефонном справочнике
...
Рейтинг: 0 / 0
13.06.2016, 20:10
    #39255313
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
1. Строку поиска разбить на слова по пробелам.
2. Слова, в которых встречаются цифры, пытаться привести к типу Date, с учетом известных коллизий.
2а. Если не получается привести к Date - слово игнорировать.
3. Из полученного набора слов и дат формировать критерий отбора с учетом возможности задействовать индексы.
4. Применить.
Все.
...
Рейтинг: 0 / 0
13.06.2016, 20:19
    #39255318
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Predeclared,

Но при этом придется соблюдать строгую последовательность частей вводимой строки?
Или нет?
...
Рейтинг: 0 / 0
13.06.2016, 20:28
    #39255324
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
1. Те слова, что удалось привести к дате, пользовать в условии к полю даты через Or
2. остальные слова три раза (к трем полям) через Or

п.1. с п.2. через AND, если п.1. имеются.
...
Рейтинг: 0 / 0
13.06.2016, 20:30
    #39255325
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Predeclared... п.1. с п.2. через AND, если п.1. имеются.
или чистый п.1, если нет п.2.
...
Рейтинг: 0 / 0
13.06.2016, 20:30
    #39255326
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Predeclared,

Будет большая избыточность результирующих данных.
...
Рейтинг: 0 / 0
13.06.2016, 21:38
    #39255346
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
saleksey67"если в строке поиска "Иван Иванов" или "Иван 24.04.2015"
Варианты уже предложили - распарсить строку и запузырить отбор через OR, но интересно - ради чего это нужно?

А дата "24.04.2015" - дата приёма или дата выписки? Или и то и другое?

Я не отговариваю, просто интересно - для чего это нужно?

Я делаю поиск так: надо найти иванова - оператор нажал "и" и в списке остались все люди с фамилией на "и" (Like 'и*'). После ввода "Иван" - с большой вероятностью останутся только "Ивановы"
В поле даты приёма ввёл "24.4.15" и останутся только Ивановы принятые в этот день
...
Рейтинг: 0 / 0
13.06.2016, 21:47
    #39255348
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
__MichellePredeclared,

Но при этом придется соблюдать строгую последовательность частей вводимой строки?
Или нет?
"Бешеной собаке семь вёрст - не крюк" - разработать небольшую программку, с элементами искусственного интеллекта и всё будет чики-пики!
Будет она распознавать и отличать имя от фамилии, будет угадывать когда "Иванович" - отчество, а когда - фамилия. А разбираться с опечатками это вообще легкотня!
...
Рейтинг: 0 / 0
13.06.2016, 22:36
    #39255359
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
__Michelle... Будет большая избыточность результирующих данных.

Это напрямую зависит от написателя критерия отбора.
...
Рейтинг: 0 / 0
28.06.2016, 13:08
    #39263711
saleksey67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск в таблице из поля 2010 MS Access
Cпасибо за ответы! Заказчика устроил упрощенный поиск без усложнения запроса! Продолжать буду на MySQL, закройте тему! Еще раз спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск в таблице из поля 2010 MS Access / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]