Главная страница
    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
4-1251885319
LightGreen
2009-09-02 13:55
2011.11.20
WM_CHAR - кодировка символов


15-1311830801
George
2011-07-28 09:26
2011.11.20
Сравнение текстов


2-1312103335
Pepe
2011-07-31 13:08
2011.11.20
Перевод из C++


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


8-1204086962
DoKi
2008-02-27 07:36
2011.11.20
opengl2 треугольники





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский