Главная страница
    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.005 c
4-9032
Непонятливый
2001-12-06 23:55
2002.02.04
помогите чайнику напечатать текст


4-9040
GoldenFox
2001-12-06 16:06
2002.02.04
Надо убрать иконку из Таскбара в WinNT,


1-8957
Belov
2002-01-17 17:38
2002.02.04
Иконки


7-9004
Soul
2001-10-25 01:37
2002.02.04
Memory


1-8878
Alexm
2002-01-16 12:52
2002.02.04
Свертывание окна





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