![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.12.2009
Сообщений: 17
|
![]()
Помогите решить проблему, есть у меня программа, работает с БД Access, есть контекстный поиск (код ниже). Поиск ищет первую запись совпадающую с условием, потом по кнопке Enter продолжает поиск след. записи совпадающей с условием и т.д. Стоит задача сделать так чтобы буквы Е и Ё в поиске не различались, т.е. набрав фамилию "Щеголев" поиск должен найти запись с "Щёголев"....пока никак не дойду своим умом....
Код:
Последний раз редактировалось Lecter2009; 19.02.2010 в 13:14. |
![]() |
![]() |
![]() |
#2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
странная реализация, но ничего кроме как делать еще одну проверку не могу предложить
Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.12.2009
Сообщений: 17
|
![]()
Спасибо поробую
Поробовал, теперь ничего не ищет кроме Е и Ё ))) Т.е. если ввести Щёголев - пишет не найден, ищет только если в строку поиска ввести буквы е или ё.....Условие не выполняется если введена какая-либо другая буква, не Е и не Ё...А мне надо чтобы можно было ввести слово (фамилию в моем случае) целиком или несколько начальных букв Кстати насчет реализации....если подскажите как еще можно организовать контекстный поиск с функцией "Найти далее" - буду премного благодарен. Моих мозгов хватило на то что написано выше...)) Последний раз редактировалось Stilet; 24.02.2010 в 17:13. |
![]() |
![]() |
![]() |
#4 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
чтобы код работал и с частью слова нужно подправить код
а я бы делал через скл-запрос, который выдаст все варианты по укаанному фильтру и в запросе можно на лету заменить все ё на е |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.12.2009
Сообщений: 17
|
![]() |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Во-первых, нужно разобраться: могут ли в базе быть, например, такие записи:
Цитата:
Как вариант тут завести дополнительное поле для поиска, в котором хранить фамилии с буквами е, т.е. в базе на каждого абонента будет фамилия для отображения пользователю (с е и ё вперемешку) и фамилия для поиска (никаких ё, только е). Заставлять пользователей вводить фамилию в двух вариантах естественно не нужно и можно вынести заполнение адаптированной под поиск фамилии в триггер, например. Тогда поиск сведётся к одному единственному запросу, в котором так же нужно будет все ё заменить на е. |
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
|
![]()
Дублировать Фамилию не вариант...у меня их больше 2,5 миллионов.
с Ё всего около 250 тысяч... Это зря базу раздувать. Есть фамилии и с 3 Ё. По этому проверка должна быть наверняка. поиск основной у меня по номеру присвоенному человеку. Но данный вопрос тоже интересен.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
|
![]() |
![]() |
![]() |
#8 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
тхаха
BARNEY, перелогиниться забыл? предложенный вариант - это небольшое раздувание базы зато сразу можно заменить все ненужные символы на однозначные и привести все буквы к одному регистру (например, верхнему) |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
|
![]()
soleil@mmc, перелогиниться это вы к чему?
Да база всегда должна идти либо в нижнем либо верхнем регистре...у меня она вся в верхнем... По этому вариант добавлять в базу ещё несколько миллионов значение , ради поиска по Е и Ё ...мягко говоря не внушает доверия.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Можно попробовать выполнить какой-то такой запрос:
Код:
Так же еще можно тупо у СУБД запросить всех абонентов, пробегать по очереди по каждому, заменять в его фамилии все ё на е и искать подходящего, только вот это всё будет медленнее работать, нежели вариант с раздуванием базы. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Буквы алфавита | Golovastik | Общие вопросы C/C++ | 27 | 24.07.2009 22:29 |
Прописные буквы | Guest_ | Помощь студентам | 6 | 15.12.2007 21:29 |
Контекстный поиск | Ferro | БД в Delphi | 1 | 09.11.2007 17:00 |
Поиск буквы в слое | o1ps | Помощь студентам | 6 | 11.05.2007 11:59 |