|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Есть таблица с пациентами в которой есть поля: -Фамилия -Имя -Отчество -Дата приема -Дата выписки Нужно чтобы текстовое из формы искало по всем полям всевозможные комбинации. Например, ввожу в поле: "Иван Иванович 02.15.2015" и получаю нужную строку в нижней части. Или ввожу 02.15.2015 и получаю всех поступивших и выписавшихся за дату 02.15.2015. Сейчас это сделано через макрос и работает только по вводу только имени, только фамилии, только отчества и например если написать в поле "фамилию имя" то поиск покажется пустой результат Что можно сделать чтобы доработать? Тестовая база, форма q_filter ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 19:11 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 19:16 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
У меня дома Access 2003, accdb он не может открыть, поэтому не знаю, что и как у вас там сделано Я бы сделал так: - фамилию, имя и отчество показывал бы как одно поле, и для него сделал бы одно поле поиска И тогда, чтобы найти всех ивановых, можно ввести в поле "иванов" и в запросе это будет выглядеть как - Like '*иванов*' - для обеих дат я бы сделал два разных поля - затрудняюсь представить ситуацию, когда может потребоваться "полнотестовый поиск" одновременно для даты приёма и даты выписки Такой запрос выберет из базы всех "ивановых" - иванов, иванова, иванович, ивановна и все прочие варианты содержащие в фполях фамилия, имя отчетство подстроку "иванов" Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 23:14 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Как я понимаю, разработка баз для вас пока(?) хобби? Если у вас действительно в одной таблице хранится и информация о человеке и информация о приёме, то надо обязательно почитать про нормализацию баз данных. Суть нормализации проста: одна сущность - одна таблица Пациенты хранятся в таблице Пациенты - логично? Информация о приёме у врача хранится в другой таблице - Прием Это только поначалу разделение на отдельные таблицы кажется излишним усложнением, но потом такие "простые" таблицы, в которых свалены в одну кучу несколько сущностей, потребуют от вас переделки многих (или всех) форм, через которые вводятся данные, и аналогично будет и с отчётами. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 23:23 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Аллюр Д.... Пациенты хранятся в таблице Пациенты ... Стехи: В таблице П - хранятся пациенты, В таблице Д - хранятся доктора, В таблице Л - кто носит лабутены, В таблице Ш - кто в о*уительных штанах. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2016, 01:13 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Аллюр Д.,Такой запрос выберет из базы всех "ивановых" - иванов, иванова, иванович, ивановна и все прочие варианты содержащие в фполях фамилия, имя отчетство подстроку "иванов" 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 в год вот и решил пренебречь этими правилами :) Нормализацию сделаю, но вопрос не в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 19:31 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
saleksey67Есть таблица с пациентами в которой есть поля: -Фамилия -Имя -Отчество -Дата приема -Дата выписки Нужно чтобы текстовое из формы искало по всем полям всевозможные комбинации. Например, ввожу в поле: "Иван Иванович 02.15.2015" и получаю нужную строку в нижней части. Или ввожу 02.15.2015 и получаю всех поступивших и выписавшихся за дату 02.15.2015. Сейчас это сделано через макрос и работает только по вводу только имени, только фамилии, только отчества и например если написать в поле "фамилию имя" то поиск покажется пустой результат Что можно сделать чтобы доработать? Тестовая база, форма q_filterСделайте столько полей, задающих критерии поиска, сколько полей, по которым нужна фильтрация. И формируйте составной критерий из непустых полей-критериев. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 19:45 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
saleksey67, пример на поиск в телефонном справочнике ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:04 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
1. Строку поиска разбить на слова по пробелам. 2. Слова, в которых встречаются цифры, пытаться привести к типу Date, с учетом известных коллизий. 2а. Если не получается привести к Date - слово игнорировать. 3. Из полученного набора слов и дат формировать критерий отбора с учетом возможности задействовать индексы. 4. Применить. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:10 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Predeclared, Но при этом придется соблюдать строгую последовательность частей вводимой строки? Или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:19 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
1. Те слова, что удалось привести к дате, пользовать в условии к полю даты через Or 2. остальные слова три раза (к трем полям) через Or п.1. с п.2. через AND, если п.1. имеются. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:28 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Predeclared... п.1. с п.2. через AND, если п.1. имеются. или чистый п.1, если нет п.2. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:30 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
Predeclared, Будет большая избыточность результирующих данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 20:30 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
saleksey67"если в строке поиска "Иван Иванов" или "Иван 24.04.2015" Варианты уже предложили - распарсить строку и запузырить отбор через OR, но интересно - ради чего это нужно? А дата "24.04.2015" - дата приёма или дата выписки? Или и то и другое? Я не отговариваю, просто интересно - для чего это нужно? Я делаю поиск так: надо найти иванова - оператор нажал "и" и в списке остались все люди с фамилией на "и" (Like 'и*'). После ввода "Иван" - с большой вероятностью останутся только "Ивановы" В поле даты приёма ввёл "24.4.15" и останутся только Ивановы принятые в этот день ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 21:38 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
__MichellePredeclared, Но при этом придется соблюдать строгую последовательность частей вводимой строки? Или нет? "Бешеной собаке семь вёрст - не крюк" - разработать небольшую программку, с элементами искусственного интеллекта и всё будет чики-пики! Будет она распознавать и отличать имя от фамилии, будет угадывать когда "Иванович" - отчество, а когда - фамилия. А разбираться с опечатками это вообще легкотня! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 21:47 |
|
Полнотекстовый поиск в таблице из поля 2010 MS Access
|
|||
---|---|---|---|
#18+
__Michelle... Будет большая избыточность результирующих данных. Это напрямую зависит от написателя критерия отбора. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2016, 22:36 |
|
|
start [/forum/topic.php?fid=45&msg=39255326&tid=1613421]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 136ms |
0 / 0 |