| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Поиск с помощью ХП и позиционирование курсора |
| Автор: scorp 14.12.2002, 22:38 |
| Не подоскажите как лучше организовать поиск например работника по фамилии с помощью храномой процедуры, так чтобы в компоненте DBGrid сохранились все записи обо всех работниках, но курсор стал напротив искомой записи? если конечно такое возможно. |
| Автор: Vit 15.12.2002, 03:06 |
| А в чём прикол использования Stored Procedurе? Ты же уже все данные вытянул и в грид положил, чтобы позиционировать курсор достаточно что-то типа Locate или FindKey, a Stored Procedurе хорошо когда тебе не надо вытягивать все данные и выполнять кверю на сервере.В данном случае Stored Procedurе приведёт к тому что физически эта кверя будет выполняться 3 раза! |
| Автор: scorp 15.12.2002, 03:22 |
| Так то оно так, я тоже понимаю что это не оптимально, однако препод - он и в Африке препод. Ну захотелось ему так. Сделаю через FindNearest - пусть так принимает.... Спасибо Vit |
| Автор: Medved 15.12.2002, 18:00 |
| Для использования FindNearest поле, по которому производиться поиск должно быть индексированно, я предпочитаю использовать Locate ([loCaseInsensitive, loPartialKey]). |
| Автор: scorp 16.12.2002, 11:54 |
| Пегас, причём тут Locate, я в делфах тоже знаю 4 способа. Ты читай вопрос: Нужно сделать ХП............... |
| Автор: Medved 16.12.2002, 19:10 | ||
А ты почитай сначала выше замечание Vit-а, а затем и мое..... |
| Автор: Vit 17.12.2002, 00:35 |
| Ладно, не надо прирекаться. Если честно то я не знаю как это сделать, практически я знаю 4 варианта установить курсов в DBGrid и не совсем понимаю каким образом сюда прилепить процедуру: 1) Locate 2) FindKey 3) перебором 4) через какой-нибудь Lookup контрол |
| Автор: Medved 17.12.2002, 00:51 |
| Всего существует 5 методов изменения курсора НД: First, Last, Next, Prior, MoveBy. И все.... GoToKey, GoToNearest, FindNerest, Findkey, Locate - это поиск, с переводом курсора. Lookup - поиск без перевода курсора, здесь следует четко разграничить методы изменения курсора НД, и методы поиска (подчеркиваю методы поиска) с переводом или не переводом курсора.... |
| Автор: AntonSaburov 17.12.2002, 01:03 | ||
Сделать, чтобы нужная запись шла первой Тогда при открытии/переоткрытии автоматом становимся на эту запись. И при этом всякие там Locate не используются "Я так думаю" (С) "Мимино" |
| Автор: Medved 17.12.2002, 01:28 |
| Ладно, вот алгоритм.... хот я считаю эту задачу абсурдной....но раз как говорит scorp ему преподаватель задал, то вот такой же абсурдный ответ: 1) В хранимую процедуру задается входной параметр, по которому производиться поиск; (например "Иванов"); 2) В хранимой процедуре выбираются запись, которая соответствуют критерию поиска (например SELECT ID FROM Sotrud WHERE FIO = 'Иванов'), и возвращается ID этой записи; 3) Осуществляется поиск с позицианированием курсора, по тому НД, который отражет в DBGrid. Т.е. Находиться запись с тем ID, который вернула хранимая процедура. Если честно, я сомневаюсь, что преподаватель мог задать такую задачу...... |
| Автор: scorp 17.12.2002, 05:22 |
| Наш препод мог )) Всем спасиба, сейчас что-то замучу, если не получиться, то сделаю замениткль. Ещё раз спасиба. |