Главная страница
    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
3-8748
TAIS
2002-01-02 09:47
2002.02.04
триггер


1-8910
Eraser
2002-01-16 10:59
2002.02.04
потоки текут-2 или получилось наполовину


1-8847
kserg@ukr.net
2002-01-21 10:24
2002.02.04
Можно ли в StringGrid-е выравнять текст ячейки?


1-8928
SergN
2002-01-17 16:34
2002.02.04
Как в Memo записать текстовый DOS файл?


1-8808
DDDeN
2002-01-16 07:29
2002.02.04
Restorator





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