Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Организовать поиск по всем строковым полям (dbf)
|
|||
|---|---|---|---|
|
#18+
Есть справочник.. Хотелось бы организовать поиск по слову в каком бы поле оно не встречалось... (аналог full text search в mssql) VFP8. dbf по сети. Подскажите плиз идеи или помогите ссылкой.. (Пока есть только одна идея -> регулярно создавать таблицу со всеми встречающимеся словами из справочника и ссылкой на id и поиск делать по ней) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 09:37 |
|
||
|
Организовать поиск по всем строковым полям (dbf)
|
|||
|---|---|---|---|
|
#18+
Есть две возможности решить проблему в зависимости от интерфейса вывода: 1. Получение Sql Select 2. Наложение фильтра Общая идея - надо пройти по всем полям справочника и определить символьноые поля, затем составить символьную строку для выражения поиска и выполнить макроподстановку строки применительно к справочнику Для фильтра: Lparameter Condition & условие фильтра local StrFilter & строка фильтра * Здесь сохранить окружение данных StrFilter = '' select MySpr & имя справочника (хорошо бы передать в параметрах) for i = 1 to Fcount('MySpr') if type(Field(i)) $ 'C M' If empty(StrFilter) StrFilter = StrFilter + allt(Field(i)) + 'Like *' + allt(Condition) + '*' else StrFilter = StrFilter + ' or ' + Allt(Field(i)) + 'Like *' + allt(Condition) + '*' endif endif endfor StrFilter = 'Set Filter to ' + StrFilter Select MySpr &StrFilter * Здесь восстановить окружение данных И пор аналогии для Sql Select PS код не проверял могут быть ошибки, но идея вроде ясна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:41 |
|
||
|
Организовать поиск по всем строковым полям (dbf)
|
|||
|---|---|---|---|
|
#18+
Если нужен просто поиск значения во всех полях таблицы, то можно так (кстати, будет работать и для чисел): Код: plaintext 1. 2. 3. 4. 5. Если нужен контекстный поиск по текстовым полям: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Да куча способов есть... Можно на FoxAPI написать функцию, которая бы возвращала всю запись в виде одной строки. Ну а если нужна максимальная скорость, можно еще хитрее. Раз у тебя сеть, значит таблица эксклюзивно не открыта. Можно получить размер заголовка и размер записи таблицы, открыть таблицу с помощью fopen() на чтение и читать записи функциями низкого уровня! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:49 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1596691]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 352ms |

| 0 / 0 |
