Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Fox pro поиск


Автор: mAtIk 21.5.2007, 15:00
Fox pro 8.0 - хелп
Вот ситуация:
Есть таблица grid и поле ввода text box 
необходимо что бы при вводе запроса в text box выдавал моментальный результат и показывал его в grid(е) устанавливая указатель на подходящею запись по запросу(похожую. пример вводим 12 он выдает нам записи 1245,1246,1245 и так далее) 


Автор: Cashey 23.5.2007, 08:52
млин, я кому-то с форума уже делал такую фигню. вот только уже не помню кому.
там суть такая - в событие KeyPress анализируешь, что нажата буквенная или цифровая клавиша и устанавливаешь филтр по введенному значению. все очень просто

Добавлено через 10 минут и 58 секунд
а элементов ComboBox и ListBox есть свойство IncrementalSearch, выставление которого, приводит к автоматическому переходу к записи, занесенной в items.
это так, для справки smile

Автор: mAtIk 23.5.2007, 09:28
Cashey а можно сам код плиз , что именно прописывать в событии KeyPress ?

буду очень признателен если еще и для символьного варианта.  smile 

Автор: Cashey 24.5.2007, 08:44
нет, кода я писать не буду, влом. если найду тот проект - вышлю

Автор: mAtIk 24.5.2007, 12:00
Цитата(Cashey @ 24.5.2007,  08:44)
нет, кода я писать не буду, влом. если найду тот проект - вышлю

Сенкс

Автор: Cashey 25.5.2007, 07:58
Нет, не нашел :(
Вот люди, сделаешь им добро, а они исчезают без следа. Ведь делал же кому-то. Вот только где теперь этот кто-то......

Автор: mAtIk 30.5.2007, 11:58
Вот сделал smile

это нужно вставить в InteractiveChage объекта textbox
Код


SELECT cursor
IF EMPTY(this.value) && проверка на наличие значения(value) в текстбоксе 
    SET FILTER TO && убераем фильтрацию 
    thisform.grid1.Refresh() &&обновляем grid 
    return 
endif

&&поиск осуществляется с применением объекта Optiongroup (в зависимости что искать текст или число)
IF ThisForm.Optiongroup1.Value=1 && Поиск по номеру 
    SET FILTER TO ALLTRIM(STR(поле1))=ALLTRIM(thisform.text10.value)
ELSE && Поиск по имени 
    SET FILTER TO AllTrim(thisform.text10.value)$UPPER(поле2)
ENDIF 
thisform.grid1.Refresh() &&обнавляем грид

поле1 - числовое
поле2 - текстовое



Автор: natalikis 12.9.2007, 11:25
А если не через 

Код

SELECT cursor

 
а чтобы параллельно с combo текстовое поле изменялось.
Как ?

Автор: ezhikzhik 2.8.2010, 19:08
Цитата

Вот ситуация:
Есть таблица grid и поле ввода text box 
необходимо что бы при вводе запроса в text box выдавал моментальный результат и показывал его в grid(е) устанавливая указатель на подходящею запись по запросу(похожую. пример вводим 12 он выдает нам записи 1245,1246,1245 и так далее) 




у меня похожая ситуация, помоги плиз. только несколько полей для ввода и поиск по соответсвующим полям

user posted image

Автор: Данкинг 2.8.2010, 20:52
ezhikzhik, создай новую тему, зачем топик трёхгодичной давности поднимать? 
Цитата(ezhikzhik @  2.8.2010,  20:08 Найти цитируемый пост)
только несколько полей для ввода и поиск по соответсвующим полям

Ну так и ставь фильтр с условием or.

Автор: vatras 24.10.2010, 01:54
Я его укоротил, т.к. у меня поиск только по словам.
Код

SELECT people
IF EMPTY(this.value) && проверка на наличие значения(value) в текстбоксе 
    SET FILTER TO && убераем фильтрацию 
    thisform.grid1.Refresh() &&обновляем grid 
    return 
endif
    SET FILTER TO AllTrim(thisform.text1.value)$UPPER(Second_name)
thisform.grid1.Refresh() &&обнавляем грид


Есть, правда, один вопросик. Я делаю поиск по столбцу с фамилиями. т.е. все слова с заглавной буквы. Когда я ввожу прописную букву поиск на нее не реагирует. Он реагирует только на большие буквы. Если я начинаю поиск с буквы "с" то не получу вообще никакого результата. Если я введу "С" то мне выведут Столыпин Соколов и Высоцкий. Это поправимо ?

Автор: Данкинг 25.10.2010, 13:23
Ну, соответственно,
Код

SET FILTER TO upper(AllTrim(thisform.text1.value))$UPPER(Second_name)


Автор: vatras 28.10.2010, 22:15
Данкинг, спасибо !!

Кстати, приделал интерактивный поиск, может кому пригодится: 
Код

SELECT people
  IF EMPTY(this.value) && проверка на наличие значения(value) в текстбоксе   
      SET FILTER TO && убераем фильтрацию   
      thisform.grid1.Refresh() &&обновляем grid   
      return   
  endif  

klu1=UPPER(AllTrim(thisform.text1.value))
SET FILTER TO UPPER(Second_name) = "&klu1." && должна быть установка Set Exact Off
thisform.grid1.Refresh()

Автор: specialist2013 8.6.2013, 03:05
Помогите пожалуйста написать в командной строке команду по фильтрации записи.
Я вот написал таким образом. Буду признателен, если кто-нибудь исправить проблему.....


BROWSE FOR Straxs.smo!>='05501' AND '05701'  - Нужно, чтобы программа оставляла только те записи, которые не равны тем значениям, которые указаны в кавычках....[code=foxpro]



Где у меня здесь ошибка.... Не могу найти.... Помогите...

Автор: Данкинг 8.6.2013, 10:14
"AND '05701'  " - это что такое? С чем это должно сравниваться-то? К тому же для сравнения "больше-меньше" значений тип поля должен быть числовым.

Автор: Cashey 14.6.2013, 18:46
Цитата(specialist2013 @ 8.6.2013,  04:05)
Помогите пожалуйста написать в командной строке команду по фильтрации записи.
Я вот написал таким образом. Буду признателен, если кто-нибудь исправить проблему.....


BROWSE FOR Straxs.smo!>='05501' AND '05701'  - Нужно, чтобы программа оставляла только те записи, которые не равны тем значениям, которые указаны в кавычках....[code=foxpro]



Где у меня здесь ошибка.... Не могу найти.... Помогите...

Код

BROWSE FOR Straxs.smo <> '05501' AND Straxs.smo <> '05701'

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)