Форум: "Базы";
Текущий архив: 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