Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

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

start [/forum/topic.php?fid=41&mobile=1&tid=1594519]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 418ms |

| 0 / 0 |
