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

Вниз

Поиск в ADO Table   Найти похожие ветки 

 
Kirill   (2001-12-29 15:04) [0]

Как проще осуществить поиск в таблице на предмет совпадения данных. Чем больше совпадение, тем лучше.
tblMain.Locate("FIOPravoobl;City;Street;House;Flat;DatePost",
VarArrayOf([frmSearch.FIO,frmSearch.City,frmSearch.Street,frmSearch.House,
frmSearch.Fl,DateToStr(frmSearch.Dat)]), [loCaseInsensitive, loPartialKey]);

не совсем работает


 
Sergy   (2001-12-29 15:07) [1]

Через SQL оператором Like


 
Kirill   (2001-12-29 15:11) [2]

Поподробнее можно, пожалуйста.


 
Sergy   (2001-12-29 15:21) [3]

Query.Sql.Text:= "select * from YouTable where
youField1 like "+#39 "%youkriteri1%"+#39 +" and
.....
youFieldn like "+#39 " %youkriterin%"+#39;
Query.Open;

P.s. Синтаксис Like может отличаться при выполнении запросов к разным БД . В данном примере синтаксис для SQL server.



 
Sergy   (2001-12-29 15:22) [4]

Подробнее об операторе Like в FAQ по SQL


 
Kirill   (2001-12-29 15:26) [5]

А через таблицу это как-нибудь реализовать можно?
А то у меня хорошая привязка к этому. Query не использую.


 
panov   (2001-12-29 15:29) [6]

>Kirill © (29.12.01 15:26)
Только полным перебором и сравнением(мое мнение).


 
Kirill   (2001-12-29 15:33) [7]

>panov
Жестоко


 
Deamon   (2001-12-29 19:16) [8]

Попробуй через локальную фильтрацию.
Ставишь Table.Filtered := False;
Ставишь Table.Filter := "YourField1 like %"+VarCond1+
"% or YourField2 %" = VarCond2
где VarCond = искомое значение для поля YourFieldN
Ставишь Table.Filtered := True;
Радуешься результату. Работает быстро на 12000 записей,
я делал условие по 2м полям. Удачи.


 
Kirill   (2002-01-03 12:37) [9]

Спасибо.


 
Kirill   (2002-01-03 18:29) [10]

F:="";
if Trim(frmSearch.FIO)<>"" then F:=F+"FIOPravoobl like """+AnsiUpperCase(frmSearch.FIO)+""" and ";
if Trim(frmSearch.City)<>"" then F:=F+"City like """+AnsiUpperCase(frmSearch.City)+""" and ";
if Trim(frmSearch.Street)<>"" then F:=F+"Street like """+AnsiUpperCase(frmSearch.Street)+""" and ";
if Trim(frmSearch.House)<>"" then F:=F+"House like """+AnsiUpperCase(frmSearch.House)+""" and ";
if Trim(frmSearch.Fl)<>"" then F:=F+"Flat like """+AnsiUpperCase(frmSearch.Fl)+""" and ";
if trim(f)<>"" then begin
if Copy(F,length(F)-4,5)=" and " then Delete(F,length(F)-4,5);
F:="where "+F+" or DatePost = """+DateTimeToStr(frmSearch.Dat)+"""";
queryMain.Close;
queryMain.SQL.Clear;
queryMain.SQL.Add("select *");
queryMain.SQL.Add("from archive");
queryMain.SQL.Add(F);
queryMain.Open;

не работает (не находит) поиск, если в ФИО только фамилия без имени и отчества


 
Smile   (2002-01-03 18:35) [11]

Если база проиндексирована то можно через GoToNearest(GoToKey). По-моему это проще.



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
1-8844
Vovochka_guest
2002-01-21 08:53
2002.02.04
Какой компонент для создания отчетов лучше?


4-9035
Art
2001-12-08 09:01
2002.02.04
Прочитайте вопрос!!!


4-9025
Rumrunner
2001-12-07 08:14
2002.02.04
Как установить окно ЛЮБОЙ программы в StayOnTop?


1-8810
Анатолий
2002-01-18 03:49
2002.02.04
SaveDialog


1-8893
Gayrus
2002-01-15 16:51
2002.02.04
StringGrid save





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