Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Вниз

Буквы Е и Ё. Контекстный поиск   Найти похожие ветки 

 
Den   (2010-02-18 16:08) [0]

Помогите решить проблему, есть у меня программа, работает с БД Access, есть контекстный поиск (код ниже). Поиск ищет первую запись совпадающую с условием, потом по кнопке Enter продолжает поиск след. записи совпадающей с условием и т.д. Стоит задача сделать так чтобы буквы Е и Ё в поиске не различались, т.е. набрав фамилию "Щеголев" поиск должен найти запись с "Щёголев"....пока никак не дойду своим умом....


var
 FoundRec: Boolean;
 FndEdit: string;
 Fld_0: TField;
begin
FndEdit := AnsiLowerCase(txtKonSearch.Text);
FoundRec := False;
         begin
           Fld_0 := DM.tbPhone.FieldByName("name");
           if txtKonSearch.Text <> "" then
           begin
             DM.dsMain.First;
             while not DM.dsMain.Eof do
             begin
               if Fld_0.IsNull then
               begin
                 DM.dsMain.Next;
                 Continue;
               end;
               if Pos(FndEdit, AnsiLowerCase(Fld_0.AsString)) > 0 then
               begin
                 FoundRec := True;
                 break;
               end;
               DM.dsMain.Next;
             end;

             if not FoundRec then
             begin
               DM.dsMain.First;
               Application.MessageBox(PChar("Абонент <" + txtKonSearch.Text +
                 "> не найден"), "Информация", MB_OK + MB_ICONINFORMATION);
             end;
           end;


 
12 ©   (2010-02-18 16:16) [1]


> набрав фамилию "Щеголев" поиск должен найти запись с "Щёголев".
> ...

почему не Щеголёв?


 
Sergey13 ©   (2010-02-18 16:29) [2]

> [0] Den   (18.02.10 16:08)
> т.е. набрав фамилию "Щеголев" поиск должен найти запись с "Щёголев"

А так же Шеглов, Шилов и Птицын. 8-)


 
Den   (2010-02-18 16:38) [3]

Нк может я неудачный пример привел.....но вопрос остался


 
Den   (2010-02-18 16:40) [4]


> 12 ©   (18.02.10 16:16) [1]

Фамилия этого человека пишется правильно именно Щёголев....


 
Den   (2010-02-18 16:40) [5]


> 12 ©   (18.02.10 16:16) [1]

Фамилия этого человека пишется правильно именно Щёголев....


 
Jeer ©   (2010-02-18 16:47) [6]

буква епс - давно уже на отбраковке.
Впрочем, как и многие слова.


 
Sergey13 ©   (2010-02-18 16:51) [7]

> [5] Den   (18.02.10 16:40)

Ну так если пользователь правильно напишет, то система правильно найдет.
Но тут за поиск отвечает пользователь, а при перестановках - автор программы.
И например когда деньги уйдут (или спишутся) не Щёголеву, а Щеголёву, то можно и поиметь неприятностей.
Впрочем дело твое. Для поиска вариантов может и неплохо.


 
12 ©   (2010-02-18 16:59) [8]

ну вот где считает, что равны

> if Pos(FndEdit, AnsiLowerCase(Fld_0.AsString)) > 0 then


т.е. если FndEdit содержится в AnsiLowerCase(Fld_0.AsString)
ну сделай FndEdit2 = замененной е на ё из FndEdit где это нужно
и
if ( Pos(FndEdit, AnsiLowerCase(Fld_0.AsString)) > 0     )
  or
  ( Pos(FndEdit2, AnsiLowerCase(Fld_0.AsString)) > 0     )    
then

только вот как ты это _где_нужно_ определишь?


> Фамилия этого человека пишется правильно именно Щёголев.

А микросхемы из Китая могут считать что его правильно зовут Лунь Цзы


 
Медвежонок Пятачок ©   (2010-02-18 17:21) [9]

Found := ExecRegExpr("(?i)ще|ёголев",Field.AsString)

первый аргумент формировать на основе введенного юзером значения.

введенное юзером "щеголев" или "щёголев" преобразовывать перед поиском в "(?i)ще|ёголев"


 
Медвежонок Пятачок ©   (2010-02-18 17:35) [10]

либо вообще тупо и просто:

заменяем в текущей проверяемой строке фамилии все "ё" на "е"
то же самое делаем в строке поиска.
а дальше обычный ансикомпаретекст.

воистину
"чтоб так петь - двадцать лет учиться надо"


 
12 ©   (2010-02-18 17:46) [11]


> заменяем в текущей проверяемой строке фамилии все "ё" на
> "е"
> то же самое делаем в строке поиска.

не, у всех меняем фамилии на "ИТОГО" и не паримся %)


 
Den   (2010-02-18 22:42) [12]

Чпачибо буду думать))


 
Den   (2010-02-18 22:44) [13]

Тьфуты ))) Клава глючит. Спасибо хотел сказать ))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.003 c
15-1311593331
Кто б сомневался
2011-07-25 15:28
2011.11.20
Интересный flash апплет с мировой статистикой "online"


15-1311338373
icelex
2011-07-22 16:39
2011.11.20
ээээх, пятниццо


15-1311539404
Юрий
2011-07-25 00:30
2011.11.20
С днем рождения ! 25 июля 2011 понедельник


2-1311696047
prodex
2011-07-26 20:00
2011.11.20
RasDial возвращает ошибку 668


15-1311884998
Юрий
2011-07-29 00:29
2011.11.20
С днем рождения ! 29 июля 2011 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский