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

Вниз

Поиск в гриде   Найти похожие ветки 

 
Armond ©   (2008-10-01 11:19) [0]

Делаю поиск в DBGrid вводя данные в Edit

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if length(Edit1.Text)<>0 then ADODataSet1.Locate("_Num", Edit1.text, [loPartialKey])
  else ADODataSet1.First;
       DBGrid1CellClick(nil);
end;

Он находит значение, а как например мне сделать так чтобы курсор встал на следующую похожую запись, например при нажатии на кнопку ?


 
Ega23 ©   (2008-10-01 11:26) [1]

Критерий похожести? что должно происходить, если стоишь на последней записи?

В целом - перебор


 
AlekseyB   (2008-10-01 11:41) [2]


> что должно происходить, если стоишь на последней записи?


Начать поиск с начала


 
Armond ©   (2008-10-01 11:43) [3]

Да, наверное, действительно начать поиск сначала


 
oldman ©   (2008-10-01 11:59) [4]


> Armond ©   (01.10.08 11:43) [3]
> Да, наверное, действительно начать поиск сначала


А зачем?


 
Armond ©   (2008-10-01 12:01) [5]


> А зачем?


Необходимо просто прыгать по тем записям, которые удовлетворяют тому, что введено в Edit


 
oldman ©   (2008-10-01 12:02) [6]


> Armond ©   (01.10.08 12:01) [5]
> Необходимо просто прыгать по тем записям, которые удовлетворяют
> тому, что введено в Edit


Тупым перебором while not eof


 
Sergey13 ©   (2008-10-01 12:05) [7]

А SQL то на что? Ограничить выборку и всех делов. Правда придется немного переделать юзерский интерфейс для работы с этим.


 
Armond ©   (2008-10-01 12:14) [8]


> Тупым перебором while not eof


А если записей не так уж и мало ?


 
Ega23 ©   (2008-10-01 12:16) [9]


> А если записей не так уж и мало ?


А без разницы. Ты по-другому никак не сделаешь.


 
Sergey13 ©   (2008-10-01 12:17) [10]

Или просто фильтровать на клиенте.


 
Armond ©   (2008-10-01 12:17) [11]


> А без разницы. Ты по-другому никак не сделаешь.

ну допустим перебором, но в ЕDit у нас лежит допустим только первые 2 буквы наименования, и как нам проверять на соответствие ?


 
Ega23 ©   (2008-10-01 12:33) [12]


> ну допустим перебором, но в ЕDit у нас лежит допустим только
> первые 2 буквы наименования, и как нам проверять на соответствие?


А что тут непонятного? Это же элементарно.
Или ты хочешь предложить подработать немножко?


 
Armond ©   (2008-10-01 12:59) [13]


> Это же элементарно.

Может быть !!! Но я тока начинаю програмить !!! Может подскажешь ?


 
oldman ©   (2008-10-01 13:02) [14]


> Armond ©   (01.10.08 12:59) [13]


>  if length(Edit1.Text)<>0 then ADODataSet1.Locate("_Num",
>  Edit1.text, [loPartialKey])


Что значит этот параметр?


 
Ega23 ©   (2008-10-01 13:06) [15]


> Может подскажешь ?


Может и подскажу.
Идешь в цЫкле по наименованиям, отбираешь те, длина которых больше равна длине того, что лежит в едите. Из низ берёшь столько символов, сколько лежит в едите. Сравниваешь их. Если истина - вот оно. Иначе - поехали дальше.


 
Armond ©   (2008-10-01 13:10) [16]


> Что значит этот параметр?


loPartialKey Key values can include only part of the matching key field value; for example, "HAM" would match both "HAMM" and "HAMMER."


 
oldman ©   (2008-10-01 13:35) [17]


> Armond ©   (01.10.08 13:10) [16]


Теперь читаем [11] и думаем...


 
Jeer ©   (2008-10-01 13:51) [18]


> Теперь читаем [11] и думаем...


Вообще-то Armond попросил перевести  [16] :)


 
MsGuns ©   (2008-10-01 17:16) [19]

Есть несколько способов поиска следующей (предыдущей)

1) Просмотр всего НД до нахождения начиная со следующей (предыдущей) записи
2) Использовать "фоновые" запросы к серверу по условию и результат запоминать в списке ИД, далее при нажатии "кнопки" искать сначала в списке, а затем по ИД из списка в НД обычным локейтом
3) Испольовать "клон" датасета, который фильтровать и искать в "клоне" опять же перебором и при нахождении опять же локейтом по ИД в "основном" НД
4) Использовать методы датасета FindXXXX, но это только если колонка (поле) является индексом


 
GrieVeR-13 ©   (2008-10-01 17:40) [20]

13131313sasasd



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1221560475
axis_of_Evil
2008-09-16 14:21
2008.11.09
Mac OS X .. вроде Leopard


2-1222870861
KirillRepin
2008-10-01 18:21
2008.11.09
можно ли из OpenDialog получить имя файла и путь


6-1194926759
hort
2007-11-13 07:05
2008.11.09
VPN


15-1221423082
Дмитрий С
2008-09-15 00:11
2008.11.09
еТикет


2-1222681814
Alik
2008-09-29 13:50
2008.11.09
Работа с сетевой картой