![]() |
|
![]() ![]() ![]() |
|
LAW |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Здравствуйте!
Проблема при поиске по нескольким полям... Есть DBF с полями Field1(String(1)),Field2(int),Field3(String(250)) Создаю составной индекс по полям Field1+Field2+Field3 Индекс нормально создаётся. (Locate() прекрасно работает, но очень медленно. Если делаю GotoKey() по одному, любому полю, всё летает как надо...) Далее делаю SetKey(); потом FieldByName('Field1') = String1; FieldByName('Field2') = Int1; FieldByName('Field3') = String2; потом GotoKey(); Результат следующий: Если значение Field1 не равно String1 - то false (не нашли). Если значение Field1 равно String1,а значение Field2 не равно String2 - то true (нашли). Из за этого теряет смысл весь GotoKey() ![]() Может чего подскажите? |
|||
|
||||
Сергей |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.6.2006 Репутация: 1 Всего: 1 |
Может тебя натолкнет, на что - следующая инфа:
В Foxe - есть ограничения на длину поля, которое принимает участие в создании индекса. Из Help для VFP9:
Так вот, Field3(String(250)) – уже не подходит под это ограничение, это первое. Второе, попробуй создать индексы для каждого поля отдельно, если это допустимо по логике работы с программой |
|||
|
||||
Сергей |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.6.2006 Репутация: 1 Всего: 1 |
Вот еще инфа для размышлений:
Методом GoToKey курсор курсор переводится на запись, в которой значение указанного поля равно ключу. Если таких записей несколько, то курсор переводится на первую из них. Если соответствующая запись не находится, то метод GoToKey возвращает false. Для полей типа строк, можно использовать не метод GoToKey, а метод GoToNearest. Этот метод перемещает курсор на запись, максимально близкую к ключу. Т.е. он срабатывает и тогда, когда совпадение не полное. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Foxpro/Clipper/Dbase" | |
|
Запрещается! 1. Публиковать ссылки для чисто рекламных целей. 2. Оффтопить, флеймить, говорить не культурно. Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему. Задавайте вопросы правильно - как спросите, так вам и ответят. Разрешено! Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил. Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы. P.S. Размещение рекламы будет строго наказываться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |