Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.01 c
5-1097961181
Gotcha
2004-10-17 01:13
2005.09.11
Новый компонент + графика


4-1121925450
Kair+
2005-07-21 09:57
2005.09.11


1-1124737726
Yozch1
2005-08-22 23:08
2005.09.11
Сохранение данных в VirtualTreeView


14-1124194962
aod_worm
2005-08-16 16:22
2005.09.11
Проблемы с СОМ-устройством. He-e-e-e-e-lp! Горю!


4-1121187841
GEN++
2005-07-12 21:04
2005.09.11
Включение/выключение устройства





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский