![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в ADO Table [D6, MSSQL, ]
Kirill © (2001-12-29 15:04:00)Как проще осуществить поиск в таблице на предмет совпадения данных. Чем больше совпадение, тем лучше.
tblMain.Locate("FIOPravoobl;City;Street;House;Flat;DatePost",
VarArrayOf([frmSearch.FIO,frmSearch.City,frmSearch.Street,frmSearch.House,
frmSearch.Fl,DateToStr(frmSearch.Dat)]), [loCaseInsensitive, loPartialKey]);
не совсем работает
Smile (2002-01-03 18:35:00) [1]Если база проиндексирована то можно через GoToNearest(GoToKey). По-моему это проще.
Kirill (2002-01-03 18:29:00) [2]
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;
не работает (не находит) поиск, если в ФИО только фамилия без имени и отчества
Kirill (2002-01-03 12:37:00) [3]Спасибо.
Deamon (2001-12-29 19:16:00) [4]Попробуй через локальную фильтрацию.
Ставишь Table.Filtered := False;
Ставишь Table.Filter := "YourField1 like %"+VarCond1+
"% or YourField2 %" = VarCond2
где VarCond = искомое значение для поля YourFieldN
Ставишь Table.Filtered := True;
Радуешься результату. Работает быстро на 12000 записей,
я делал условие по 2м полям. Удачи.
Kirill (2001-12-29 15:33:00) [5]>panov
Жестоко
panov (2001-12-29 15:29:00) [6]>Kirill © (29.12.01 15:26)
Только полным перебором и сравнением(мое мнение).
Kirill (2001-12-29 15:26:00) [7]А через таблицу это как-нибудь реализовать можно?
А то у меня хорошая привязка к этому. Query не использую.
Sergy (2001-12-29 15:22:00) [8]Подробнее об операторе Like в FAQ по SQL
Sergy (2001-12-29 15:21:00) [9]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.
Kirill (2001-12-29 15:11:00) [10]Поподробнее можно, пожалуйста.
Sergy (2001-12-29 15:07:00) [11]Через SQL оператором Like