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

Вниз

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

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

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1222860218
renex
2008-10-01 15:23
2008.11.09
не передается динамический массив в функцию


6-1195038106
Vice____
2007-11-14 14:01
2008.11.09
пересылка файла через сокеты


15-1221327688
Johnnnnnn
2008-09-13 21:41
2008.11.09
Редактор кода для Делфи типа PhpED?


2-1222684547
zdm
2008-09-29 14:35
2008.11.09
Перевод Ф.И.О. в верхний регистр


3-1209208049
hahol_64_rus
2008-04-26 15:07
2008.11.09
не могу создать тригер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский