Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

AdoQuery.seek   Найти похожие ветки 

 
surkis   (2005-07-29 11:04) [0]

Ребята подскажите почему может не работать AdoQuery.seek? Ошибка: "Текущий проводник не поддерживает необходимый интерфейс для функции Index". Заранее благодарен!


 
Плохиш ©   (2005-07-29 11:12) [1]

Потому что Текущий проводник не поддерживает необходимый интерфейс для функции Index


 
surkis   (2005-07-29 11:19) [2]

а как можно сделать поиск?


 
sniknik ©   (2005-07-29 11:22) [3]

только один провайдер(jet) насколько мне известно поддерживает режим для seek.

> а как можно сделать поиск?
locate


 
surkis   (2005-07-29 11:26) [4]


> locate

большое спасибо!!!


 
surkis   (2005-07-29 11:30) [5]

а если несколько одинаковых значений в поле locate переходит на первую, а как найти следующую?


 
Anatoly Podgoretsky ©   (2005-07-29 11:44) [6]

surkis   (29.07.05 11:30) [5]
Поиск и перемещения это разные действия, хочешь перемещаться используй .Next, хочешь найти используй .Locate


 
ANB ©   (2005-07-29 11:47) [7]


> surkis   (29.07.05 11:30) [5]
- для таких случаев есть предложение WHERE в SQL.


 
surkis   (2005-07-29 11:48) [8]


> Поиск и перемещения это разные действия, хочешь перемещаться
> используй .Next, хочешь найти используй .Locate

Нет я хочу находить и (переходить на них) поочёрёдно все записи с определённым значением


 
surkis   (2005-07-29 11:50) [9]


> - для таких случаев есть предложение WHERE в SQL.


мне нужно чтобы в гриде отображались все записи а на нужные переходить


 
ЮЮ ©   (2005-07-29 11:59) [10]

>мне нужно чтобы в гриде отображались все записи а на нужные переходить

значит остальные ненужные. А если они такие нужные, пусть пользователь и листает многотысячный грид сам, выискивая из очень нужных самые нужные заиси


 
sniknik ©   (2005-07-29 13:08) [11]

> Нет я хочу находить и (переходить на них) поочёрёдно все записи с определённым значением
поиск по индексному выражению FindFirst, FindNext, ...


 
Anatoly Podgoretsky ©   (2005-07-29 13:27) [12]

surkis   (29.07.05 11:48) [8]
Делаем последнюю попытку, Locate - найти, Next - перейти на следующую. Попробуй объединить.


 
surkis   (2005-07-29 14:22) [13]


> Делаем последнюю попытку, Locate - найти, Next - перейти
> на следующую. Попробуй объединить.

не знаю может я тупой и не могу понять что вы мне пытаетесь сказать но Next не помагает, потому что Locate всёравно начинает с первой записи поиск


 
Reindeer Moss Eater ©   (2005-07-29 14:26) [14]

Loicate ищет.
Найдя позиционируется на найденное.
Искать он начинает с текущей позиции.
Итого:
Найдя первый раз, и ища второй раз, он находит уже найденное и никуда не перемещается.


 
Anatoly Podgoretsky ©   (2005-07-29 14:27) [15]

Reindeer Moss Eater ©   (29.07.05 14:26) [14]
Не просто позиционирует, а позиционирует на самую первую запись в наборе данных! Это существенный факт.


 
surkis   (2005-07-29 14:42) [16]


> Loicate ищет.
> Найдя позиционируется на найденное.
> Искать он начинает с текущей позиции.
> Итого:
> Найдя первый раз, и ища второй раз, он находит уже найденное
> и никуда не перемещается.

При переходе на следующую запись Locate всёравно переходит на первую найденую с начала


 
surkis   (2005-07-29 14:43) [17]

короче он ищет не с текущей а с первой!


 
Anatoly Podgoretsky ©   (2005-07-29 14:45) [18]

Он просто ищет и больше ничего


 
surkis   (2005-07-29 14:48) [19]


> Он просто ищет и больше ничего


Да но он начинает поиск всегда с первой записи потому до второй дело не доходит. В любом случае всем спасибо, я уже придумал как это сделать!


 
Anatoly Podgoretsky ©   (2005-07-29 15:15) [20]

Поиск должен быть повторяемым, иначе что это за поиск.
Придумывать ничего не надо тебе уже все сказали.


 
msguns ©   (2005-07-29 15:48) [21]

function DBServ_SearchRecordByField(Grid: TDBGrid; Option: TSearchOption; RaiseErr: boolean): boolean;
// Функция ищет запись в открытом НД, отображаемом в гриде по значению текущего поля
//  (колонки грида) в напрвлении, указанном Option
var
 bm: TBookMark;
 val: variant;
 DS: TDataSet;
begin
 result := false;
 if not Grid.Focused then exit;
 DS := Grid.DataSource.DataSet;
 if (DS=nil) or not DS.Active or (DS.RecordCount<2) then exit;
 Screen.Cursor := crHourGlass;
 DS.DisableControls;
 DS.Tag := 1;
 bm := DS.GetBookmark;
 val := Grid.SelectedField.Value;
 if Option=soFirst then
   begin
    if DS.Locate(Grid.SelectedField.FieldName,Grid.SelectedField.Value,[]) then
      begin bm := DS.GetBookmark; result := true; end;
   end
 else
   if Option in [soNext,soLast] then
     begin
      DS.Next;
      while not DS.Eof do
        begin
         if Grid.SelectedField.Value=val then
           begin
            result := true;
            bm := DS.GetBookmark;     // Запомнить последнюю найденную
            if Option=soNext then break;
           end;
         DS.Next;
        end;
     end
   else
     begin
      DS.Prior;
      while not DS.Bof do
        begin
         if Grid.SelectedField.Value=val then
           begin
            result := true;
            bm := DS.GetBookmark;     // Запомнить первую найденную
            break;
           end;
         DS.Prior;
        end;
     end;
 DS.Tag := 0; DS.EnableControls; DS.GotoBookmark(bm); DS.FreeBookmark(bm);
 Screen.Cursor := crDefault;
 if not result and RaiseErr then ShowMessage("Образец не найден");
end;


 
surkis   (2005-07-29 16:04) [22]


> msguns ©   (29.07.05 15:48) [21]

Большое спасибо за пример, теперь понятнее



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

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.027 c
14-1124074481
Alexander Panov
2005-08-15 06:54
2005.09.11
Просьба потестировать.


14-1124285829
Piter
2005-08-17 17:37
2005.09.11
Забавный эффект :)


2-1123531110
Nox7777
2005-08-08 23:58
2005.09.11
Как убрать мелькания при прорисовке изображений


8-1114430617
Ibrox
2005-04-25 16:03
2005.09.11
RLE компрессия в TGA


14-1124170032
Установщик
2005-08-16 09:27
2005.09.11
Delphi 2005