Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Задача : поиск в поле таблицы определннного значения Пример: Москва.ИнтерТур-искомое значение Москва.ИнтерСвязь - самое похожее в таблице, соотв. Москва.ИнтерТур нет в таблице обычный локейт не найдет написал такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. в цикле ищется похожее отсекая по букве, недостаток такого алгоритма в том что при большой таблице и большой переменной c_Find он может притормаживать. Есть ли вариант лучше? Может быть кто то сталкивался с подобной задачей? ______________________________________ с уважением: Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:17 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
MyString=ИнтерСвязь select * from table1 into curs qq1 where nam$Mystring brow normal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:25 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
MyString="ИнтерСвязь" select * from table1 into curs qq1 where nam$Mystring brow normal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:26 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
MyString="Москва.Интер" select t1 locate for nam$nam$Mystring do while !eof() messagebox(nam) continue enddo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:30 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
MyString="Москва.Интер" select t1 locate for nam$Mystring do while !eof() messagebox(nam) continue enddo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:31 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
leafMyString="Москва.Интер" select t1 locate for nam$Mystring do while !eof() messagebox(nam) continue enddo Хех А как узнать где Москва.Интер а где Москва. и дальше что то другое? MyString="Москва.Интер" - не пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:34 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Наверно я плохо обьяснил надо найти строку значение которой максимально близко к искомому значению ______________________________________ с уважением: Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:40 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
MyString="Москва.ИнтерТур" nn=len(MyString) select t1 locate for alltrim(nam)$left(MyString,nn) do while !found() and nn>1 nn=nn-1 locate for alltrim(nam)$left(MyString,nn) enddo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:48 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Строится индекс по интересующему полю (в данном случае по полю F1), а далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:51 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
leafMyString="Москва.ИнтерТур" nn=len(MyString) select t1 locate for alltrim(nam)$left(MyString,nn) do while !found() and nn>1 nn=nn-1 locate for alltrim(nam)$left(MyString,nn) enddo Так это тоже самое что я предложил. leaf вы читали что я написал то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:52 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
ВладимирМСтроится индекс по интересующему полю (в данном случае по полю F1), а далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. " Если поиск завершился неудачно, SEEK( ) возвращает "ложь" (.F.) и указатель записи устанавливается в конец файла." Так что толку от : ELSE * Указатель встал на запись ближайшую к искомой ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:55 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
set near off при индексе не обязательно делть каждый раз поиск по всей таблице моно сканировать таблицу от скажем например от "М" до "Н" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 14:59 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Возможно эту задачу поможет решить metla.vcx с сайта Михаила Дроздова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:03 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
" Если поиск завершился неудачно, SEEK( ) возвращает "ложь" (.F.) и указатель записи устанавливается в конец файла." Был неправ , виноват SET NEAR ON хелп почитал А есть еще RECNO(0) воспользуюсь лучше ей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:05 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
RECNO(0) а как вы хотите использовать это? ИМХО всегда ноль или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:10 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
"Функция SEEK( ) возвращает логическое значение, указывающее, насколько успешным был поиск." "При выдаче функции RECNO( ) с аргументом 0 в случае неудачного поиска возвращается номер наиболее подходящей записи, независимо от установки SET NEAR." ______________________________________ с уважением: Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:18 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Не.. ребята, решение в лоб без сканирования не пройдет, все предложенные решения подразумевают, что начало слова совпадает с началом искомого выражения, а здесь я так понял нужен аналог полнотекстового поиска. По повду алгоритма, наверное нужно отсекать символы справа и затем искать $, и потом надо бы не Locate использовать, а Select, что бы предоставить все вхождения, поскольку МоскваИнтер может быть несколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:36 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
вариант с выборкой в курсор и последующей обработкой был отброшен автором да и он уже нашел решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 15:49 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
PaulWistНе.. ребята, решение в лоб без сканирования не пройдет, все предложенные решения подразумевают, что начало слова совпадает с началом искомого выражения, а здесь я так понял нужен аналог полнотекстового поиска. В данном случае меня устроит совпадение начала слова с началом искомого выражения. т к таблица большая и там есть все буквы алфавита( ну или почти все) а полнотекстовый поиск как раз тут не подойдет. --------------------------- Но вообще и насчет полнотекстового поиска очень интересно как без цикла сделать. но PaulWist По повду алгоритма, наверное нужно отсекать символы справа и затем искать $, и потом надо бы не Locate использовать, а Select, что бы предоставить все вхождения, поскольку МоскваИнтер может быть несколько. ту опять предлагают цикл зависящий от длины переменной, хочется как то изящней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 16:30 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
авторВ данном случае меня устроит совпадение начала слова с началом искомого выражения. А если таких совпадений будет 100, то Locate найдет только первое, и что показать пользователю - первое совпадение или 10-ое или все? авторНо вообще и насчет полнотекстового поиска очень интересно как без цикла сделать. Вот здесь есть , на мой взгляд очень достойное решение http://www.foxclub.ru/sol/index.php?act=view&id=443 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 16:40 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Hi PaulWist! > А если таких совпадений будет 100, то Locate найдет только первое, и что показать пользователю - первое совпадение или 10-ое или все? Если активен нужный индексный тег (а причин обратному я не вижу), то достаточно показать курсор в grid/browse - соответственно будут видны ВСЕ более менее подходящие записи (по началу слова поиска конечно). Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2005, 16:57 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Igor Korolyov> А если таких совпадений будет 100, то Locate найдет только первое, и что показать пользователю - первое совпадение или 10-ое или все? Если активен нужный индексный тег (а причин обратному я не вижу), то достаточно показать курсор в grid/browse - соответственно будут видны ВСЕ более менее подходящие записи (по началу слова поиска конечно). Игорь, ну так для этого и задавался вопрос, что бы человек попробовал на него ответить и в конце концов понял, какое надо принять решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 08:48 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Вообще вариант с SEEk не подходит Поиск должен вестись не по индексируемому полю. И проиндексировать его не могу. Т. к. система не моя. Могу сделать выборку в курсор сделать с ним все что захочу, найти в нем, а затем перескочить на необходимую запись. Но как то слишком замудрено не будет ли медленнее чем несколько локейтов? ______________________________________ с уважением: Strong ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 09:34 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
StrongВообще вариант с SEEk не подходит Поиск должен вестись не по индексируемому полю. И проиндексировать его не могу. т.е. поле то индексируемое (в таблице) и представление упорядочено по нему но как мне этим воспользоватся не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 09:48 |
|
||
|
Locate в цикле правильно ли это ?
|
|||
|---|---|---|---|
|
#18+
Strong StrongВообще вариант с SEEk не подходит Поиск должен вестись не по индексируемому полю. И проиндексировать его не могу. т.е. поле то индексируемое (в таблице) и представление упорядочено по нему но как мне этим воспользоватся не знаю. Индексировать представление по тому же полю (после открытия) и потом делать все вышесказанное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2005, 10:06 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32980938&tid=1594519]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 342ms |

| 0 / 0 |
