Вниз
Скачать: CL | DM;

Как перейти к следующе из найденных по какому-либо условию записи   Найти похожие ветки 

 
Lamo_xxxx ©   (2004-04-28 08:38) [0]

есть набор данных(ADOQuery).
делаю поиск...

ADOQuery1.Locate("name","xx",[loCaseInsensitive, loPartialKey]);

Locate - останавливается на первой записи из найденных.
если, условию поиска удовлетворяет больше чем одна запись, как перейти к следующим?


 
sniknik ©   (2004-04-28 08:46) [1]

1 сортировка и Next пока равно.
2 паралельный запрос с выбором ID записей удовлетворяющих условию, перемещение по ID
3 поиск по фильтру findfirst, findnext ...


 
Lamo_xxxx ©   (2004-04-28 08:58) [2]

findfirst, findnext

работают только если установлен фильтр?


 
Lamo_xxxx ©   (2004-04-28 09:01) [3]

А вот в TIBQuery есть интересный метод

LocateNext()

пробовал...
делает тоже самое, что Locate(), хотя по названию должен вроде нечто иное делать..


 
ZrenBy ©   (2004-04-28 09:27) [4]

В копилку. Вариант для ADODataSet & SQLOLEDB


procedure TForm1.ButtonFindClick(Sender: TObject);
var n:Integer;
begin
// ADOQuery1.SQL.Text := " use pubs select * from authors";
 if(ButtonFind.Tag=0)then begin
   ADOQuery1.Recordset.AbsolutePosition := 1;
   ADOQuery1.Recordset.Find("au_id like "+QuotedStr("%-72-%"),0,adSearchForward,0);
   if not(ADOQuery1.Recordset.EOF or ADOQuery1.Recordset.BOF)then begin
     ButtonFind.Tag := 1;
   end else begin
     Application.MessageBox("Нету","",0);
     Exit;
   end;
 end else begin
   ADOQuery1.Recordset.Find("au_id like "+QuotedStr("%-72-%"),1,adSearchForward,0);
   if(ADOQuery1.Recordset.EOF or ADOQuery1.Recordset.BOF)then begin
     ButtonFind.Tag := 0;
     ButtonFindClick(nil);
     Exit;
   end;
 end;
 n := ADOQuery1.Recordset.AbsolutePosition - 1;
 ADOQuery1.First;
 ADOQuery1.MoveBy(n);
end;


 
Lamo_xxxx ©   (2004-04-28 10:01) [5]

круто...

а для TIBQuery есть что-нибудь похожее?


 
sniknik ©   (2004-04-28 10:42) [6]

ZrenBy ©   (28.04.04 09:27) [4]
это похоже попытка собственной реализации поиска по индексу. посмотри в хелп по findfirst, findnext ..


 
Vlad ©   (2004-04-28 10:47) [7]


> Lamo_xxxx ©   (28.04.04 10:01) [5]

Для TIBQuery метод Locate организован с помощью обычного цикла while not eof ...
Его не трудно написать самому.
Или есть готовый метод LocateNext


 
ZrenBy ©   (2004-04-28 12:56) [8]

...findfirst, findnext ..

А если нужен и фильтр и финд одновременоо ?


 
sniknik ©   (2004-04-28 13:30) [9]

ну тогда делать по другому.

хотя использование фильтра в серверных решениях это экзотика, если он нужен то скорее всего получили кучу лишних данных, просадили сетку... и т.д. (имхо естественно)



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
1-1083775237
Delphi5.01
2004-05-05 20:40
2004.05.23
... вместо override использовать virtual ...


6-1081322235
Srg
2004-04-07 11:17
2004.05.23
Indy DEMO


3-1082149737
lockheed_man
2004-04-17 01:08
2004.05.23
поиск записи в таблице


6-1080642779
vinter
2004-03-30 14:32
2004.05.23
Как получить список доменов


3-1083040503
AntonVS
2004-04-27 08:35
2004.05.23
кирилица в FB




   Наверх