Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / быстрый поиск / 10 сообщений из 10, страница 1 из 1
26.05.2009, 15:27
    #36008240
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
Подскажите,как сделать ускоренный(быстрый)поиск ,например телефонного номера(6 цифр) ,из БД....если известны только три первый цифры номера? эти 3 цифры вводим с клавиатуры...
При моем решении вообще не выводится ничего...((
...
Рейтинг: 0 / 0
26.05.2009, 16:12
    #36008425
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
тел=SPACE(3)
@3,4 say 'тел=' get тел
READ
INDEX on фам + адрес TO xxx
ns=1
SEEK тел
DO WHILE STR(телефон,9)= тел
@9+ns,12 say фам
ns=ns+1
skip
enddo


Где тел-это первые вводимые цифры номера,а телефон значение в бд...

Что не так?(((
...
Рейтинг: 0 / 0
26.05.2009, 16:23
    #36008478
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
Blacklineтел=SPACE(3)
@3,4 say 'тел=' get тел
READ
INDEX on фам + адрес TO xxx
ns=1
SEEK тел
DO WHILE STR(телефон,9)= тел
@9+ns,12 say фам
ns=ns+1
skip
enddo


Где тел-это первые вводимые цифры номера,а телефон значение в бд...

Что не так?(((Да все не так. :)
1. Индексируем по фамилии и телефону, а ищем телефон.
2. seek ищет полное соответствие, а не частичное.

Напишите после Read
Код: plaintext
1.
2.
3.
4.
set order to  0 
scan for тел = телефон
  @ 9 +ns, 12  say  фам
 ns=ns+ 1 
endscan
вмсето всего того, что там написано.
...
Рейтинг: 0 / 0
26.05.2009, 16:51
    #36008583
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
тел=SPACE(3)
@3,4 say 'тел=' get тел
READ
INDEX on фам + телефон TO xxx
set order to 0
scan for тел = телефон
@9+ns,12 say фам
ns=ns+1
endscan

В данном случае, тел и телефон не совпадают по типу)))
тел=SPACE(3) или scan for тел = str(телефон,9) ?(( ужас какой(((
...
Рейтинг: 0 / 0
26.05.2009, 16:54
    #36008593
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
Blackline,
если SET EXACT установить в OFF, то Fox найдет нужную запись, только предварительно "обрежьте" концевые пробелы в переменной: тел=TRIM(тел)
...
Рейтинг: 0 / 0
26.05.2009, 16:58
    #36008603
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
Blackline, лучше преобразовать поле "Телефон" в символьное, и

Код: plaintext
replace all телефон with ltrim(телефон) && для выравнивания по левому боку :). 

Это значительно упростит любые варианты поиска по номеру
...
Рейтинг: 0 / 0
26.05.2009, 17:10
    #36008646
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
извинюсь за некоторую глупость,но где найти set exact? Или в командном прописать?...помогите, Я нубкО)))
...
Рейтинг: 0 / 0
26.05.2009, 17:15
    #36008664
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
set exact отключено...
но сие прога не работает(


тел=SPACE(3)
@1,4 say 'тел=' get тел
READ
set order to 0
ns=1
scan for тел = STR(телефон,9)
@9+ns,12 say фам
ns=ns+1
endscan
...
Рейтинг: 0 / 0
26.05.2009, 17:38
    #36008729
TheGuest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
Blackline,

тел=SPACE(3)
@1,4 say 'тел=' get тел
READ
set order to 0
ns=1
scan for ALLTRIM(STR(телефон)) = тел
@9+ns,12 say фам
ns=ns+1
endscan

Это если так, как Вы хотите. А вообще GermanGM дело говорит.
...
Рейтинг: 0 / 0
26.05.2009, 17:43
    #36008747
Blackline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрый поиск
аа!!!)))) спасибо)))работает!))))БОЛЬШОЕ спасибо всем!!! вы меня выручили....
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / быстрый поиск / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]