Вниз
Скачать: 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.037 c
3-1082961275
pet600
2004-04-26 10:34
2004.05.23
Oracle DB-name


8-1078638004
Nash_AP
2004-03-07 08:40
2004.05.23
Как увеличить/уменьшить яркость TColor?


3-1083148163
gu_est
2004-04-28 14:29
2004.05.23
номер колонки в DBGridEh


14-1083526687
Piter
2004-05-02 23:38
2004.05.23
Пропаганда пива


4-1081449731
WELLiON
2004-04-08 22:42
2004.05.23
отлов сообщений от контекстного меню




   Наверх