Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
есть такие строки:
вот только дело в том, что SEEK делает указатель на первый, соответствующий индекс, а как его запустить в цикл дабы он мне вывел все найденные индексы? желательно именно "SEEK в цикле" но если это нереально, то подскажите пожалуйста как сделать задачу другими методами |
Re: Seek в цикле | |
---|---|
AlexSSS Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
какая версия фокса?
foxpro 1.0.? и что ты вообще хочешь получить? |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
9.0
я хочу получиmь на экране список названия двигателей, а также их изготовителей, которые соответствуют некоторому ключу (допустим все "V"-образные(у меня в таблице этому соответствует 2)) |
Re: Seek в цикле | |
---|---|
AlexSSS Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
select * from table where enginetype=2
Исправлено 1 раз(а). Последнее : AlexSSS, 24.10.10 00:54 |
Re: Seek в цикле | |
---|---|
AlexSSS Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
ты учился по учебнику досовского фокса?
на МАЗ так уже давно никто не пишет > SET INDEX TO engine &&открываю индексный файл "engine" используй CDX индекс, он сам открывается вместе с таблицей > SET ORDER TO 3 &&делаю фокус на 3-м индексе set order to tagname > SET NEAR ON &&включаю поиск приближенного значения почитай хелп, для чего используется эта команда > SEEK num &&делаю поиск можно и так но > SET ORDER TO 3 &&делаю фокус на 3-м индексе > SEEK num &&делаю поиск легко и удобно заменяются на seek(num, tablename, tagname) > @ 1,i say name+develop&&вывожу на экран данные это весьма редко используемый устаревший вариант вывода |
Re: Seek в цикле | |
---|---|
AlexSSS Сообщений: 6113 Откуда: Tallinn, Estonia Дата регистрации: 19.09.2005 |
а если тебе нужно
> я хочу получиmь на экране список названия двигателей, > а также их изготовителей, которые соответствуют некоторому ключу > (допустим все "V"-образные(у меня в таблице этому соответствует 2)) то здесь стоит использовать SELECT SQL |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
спасибо, я знаю что это все старое уже, я только начинаю фокспро юзать, в университет надо лабу написать, потихоньку может и дойду до более умных вещей)
|
Re: Seek в цикле | |
---|---|
Penner Сообщений: 4102 Откуда: Muenster Дата регистрации: 26.04.2002 |
на крайний случай
SET KEY TO ------------------ Никогда не откладывайте на завтра, то, о чем можно забыть навсегда |
Re: Seek в цикле | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Например, так:
------------------ С уважением, Михаил Дроздов, Пермь, Россия Исправлено 1 раз(а). Последнее : MichaelD, 24.10.10 03:14 |
Re: Seek в цикле | |
---|---|
reware Сообщений: 4116 Откуда: Хабаровск Дата регистрации: 21.07.2008 |
Непонятки. Команда SEEK не управляет перечнем индексов/тегов. Коль указали SET ORDER TO 3, так по третьему тегу и будет искать. Насчёт "цикла" - ну сделайте себе элементарный цикл (только зачем он ?) с переключением SET ORDER TO TAG ... |
Re: Seek в цикле | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Каша в голове. Seek не делает указателей на индекс. Ищутся не индексы, а записи. Seek ищет всегда только первую удовлетворяющую выражению индекса запись. И нет понятия "фокус на индекс". Set index указывает файл с индексом. Set order указывает какой из индексов будет использоваться для поиска при наличии нескольких индексов. Варианты уже накидали. ------------------ Лень - это неосознанная мудрость. |
Re: Seek в цикле | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Еще один вариант - использовать цикл scan
Или, если надо выполнить какие-то действия только в случае если найдена хотя бы одна запись, то можно так:
При этом можно обойтись вообще без индексов и установки активного. Если же будет структурный индекс (CDX) по полю num, то скорость выполнения будет почти такая-же, как и при использовании активного индекса и цикла. |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
а как здесь заменить LOCATE FOR ... &&<- or command SEEK? ведь фокспро ругается и говорит что для CONTINUE нужен только LOCATE? |
Re: Seek в цикле | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Да, с командой SEEK я возможно погорячился... : - http://www.foxclub.ru/rhproject/project/html/fe9bb458-0229-4841-b3f7-3762e61228c6.htm - http://www.foxclub.ru/rhproject/project/html/dd60dab3-c995-47b1-9efb-761750fc9492.htm - http://www.foxclub.ru/rhproject/project/html/4d0bef69-fd9f-4ae8-beed-e236dcd7efca.htm - ... 1) Для использования именно команды/функции SEEK, следует: - разово выполнить SEEK - и в случае удачи, далее: . крутить условный DO WHILE <условие> + SKIP . или условный SCAN REST <условие> 2) В использовании LOCATE FOR ... с учётом http://www.foxclub.ru/rhproject/project/html/e7c36f99-0993-40a7-be80-0717cbe85b8c.htm Цитата: чего именно смущает? ------------------ С уважением, Михаил Дроздов, Пермь, Россия Исправлено 6 раз(а). Последнее : MichaelD, 24.10.10 12:07 |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
дело в том что SEEK все ровно просто делает указатель на первый попавшийся в таблице соответствующий индекс. в этом вся загвоздка, я делаю SKIP, а он возвращается в начало индексного файла |
Re: Seek в цикле | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Вывод результатов где организован: - в цикле в случае удачи - или вне цикла ? - тот код который показан и не должен выводить больше чем одну найденную запись... - код, который "прямо сейчас" используешь с учётом высказанных замечаний, можно сюда показать? Ибо телепатов здесь нет... ------------------ С уважением, Михаил Дроздов, Пермь, Россия |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
|
Re: Seek в цикле | |
---|---|
pioner-v Сообщений: 1656 Дата регистрации: 01.05.2010 |
Зачем Seek внутри цикла? Нужно поставить сравнение num с выражением равным ключу текущего тега. Чему равно индексное выражение в engine? Надо, примерно, так:
Исправлено 1 раз(а). Последнее : pioner-v, 24.10.10 14:02 |
Re: Seek в цикле | |
---|---|
MichaelD Сообщений: 7578 Дата регистрации: 14.05.2005 |
Хм... - команда SEEK num, расположенная в цикли ищет поновой, плевать хотела на предшествующи поиск - относительно SEEK выше было сказано: разово выполнить SEEK вот одна из схем, которая была озвучена выше:
т.е. докручивание цикла производится именно в условном DO WHILE <KeyFieldTagName> = <value>... + SKIP, без каких-либо SEEK внутри... ------------------ С уважением, Михаил Дроздов, Пермь, Россия Исправлено 3 раз(а). Последнее : MichaelD, 24.10.10 14:27 |
Re: Seek в цикле | |
---|---|
BigLes Автор Сообщений: 9 Дата регистрации: 24.10.2010 |
Спасибо всем! из всего предложенного написал вот что:
|
© 2000-2024 Fox Club  |