Страница 1 из 1

Быстрый поиск в Browse

Добавлено: 26 май 2006, 11:01
Hello.World()
Хочу, чтобы у меня в Browse был быстрый поиск, как, например, в картотеке сотрудников: набираем фамилию и курсор фокусируется. Знаю, что должно запускаться нечто обработчиком cmopensearch, но что? Помогите, плиз, кто сталкивался?

Добавлено: 26 май 2006, 11:54
поЧитатель
Пример кода:

PANEL P;
SHOW AT (,,,);
TABLE KatMol;
BROWSE B;
FIELDS
KatMol.Kod '№ ' : [3], ProTect, QuickChoice;
KatMol.Name 'ФАМИЛИЯ' : [40], ProTect, QuickChoice;
END;
HandleEvent
...
END;

Добавлено: 26 май 2006, 13:35
Hello.World()
Т.е. достаточно добавить quickchoice к полям? Я так уже пробовал.
У меня не работает. Поле выделяется желтым, дальше этого не идет. При нажатии кнопок просто ничего не происходит.

Добавлено: 26 май 2006, 13:45
edward_K
1. Быстрый поиск по индексным полям в browse и так будет работать без всяких дополнительных вещей
2. vipprogr.chm, поиск - QuickChoice - Объект быстрого выбора
в лом доку посмотерть? Там и примерчик есть.

Добавлено: 26 май 2006, 15:44
Hello.World()
Не влом. Первым делом перелопатил доки. Пример там очень веселый, а я начинающий. :-) Да и в примере IMHO идет быстрый выбор в виде выпадающего списка из поля в Screen, а не быстрый поиск в Browse.
Ну вот мой код, простой как 3 рубля. Не получается. Помогите, у кого есть наглядный примерчик.

#include galnet.inc
end;
INTERFACE quickchoicetest 'Выбор сотрудника' (,,scQuickChoice) DOACCEPT,ESCCLOSE, CYAN;
show at (1,1,50,15);
var
sotr_nrec:comp;
create view t1
var
sotr_nrec:comp;
as select
persons.nrec,
persons.tabnmb,
persons.fio,
catalogs.name from
catalogs,
persons (PERSBYFIO),
appointments
where
((appointments.person/==persons.nrec and
appointments.post/==catalogs.nrec)) and
persons.disdate='ДД/ММ/ГГГГ' and
isemployee='С' and
WADDWORD1=1 and
appointments.DISMISSDATE='ДД/ММ/ГГГГ';

browse UsersBrowse
Fields
persons.tabnmb 'Таб.номер': protect, QuickChoice;
persons.fio 'ФИО' :protect, QuickChoice;
catalogs.name 'Должность': protect, QuickChoice;
end;
end.

Добавлено: 29 май 2006, 12:15
dp
надо событие cmQuickchoise описать с реациями на ввод в разных полях - в доках тоже примеры есть

Добавлено: 30 май 2006, 15:24
поЧитатель
У всех все работает. сейчас только проверил - РАБОТАЕТ

INTERFACE quickchoicetest 'Выбор сотрудника' (,,) DOACCEPT,ESCCLOSE, CYAN;
show at (1,1,50,15);
var
sotr_nrec:comp;
create view t1
var
sotr_nrec:comp;
as select
persons.nrec,
persons.tabnmb,
persons.fio,
catalogs.name from
persons (PERSBYFIO),
catalogs,
appointments
where
((
'С' == persons.isemployee
and date(0,0,0) == persons.disdate (noindex)
and 1 == persons.WADDWORD1 (noindex)
and persons.nrec /== appointments.person
and appointments.post == catalogs.nrec))
and (LongInt(appointments.DISMISSDATE)=0);
panel Userspanel
table persons;
browse UsersBrowse
Fields
persons.tabnmb 'Таб.номер': protect;// В этих колонках
persons.fio 'ФИО' :protect; // QuickChoice - и так сработает
catalogs.name 'Должность': protect; // В этой колонке QuickChoice не сработает
end;
end;
end.

:-D :-D :-D :-D

Добавлено: 31 май 2006, 11:21
Hello.World()
[quote="поЧитатель"]У всех все работает. сейчас только проверил - РАБОТАЕТ

УРА! Действительно работает! Единственное, у меня заругался на

and 1 == persons.WADDWORD1 (noindex)

не узнает "persons.WADDWORD1". Заменил на просто WADDWORD1, прокатило.
Почему мой код не работает, пока не понял. Видимо, как-то не так построил запрос, хотя он и выдает то же, что у вас, только не сортирует и не ищет.

Спасибо, поЧитатель. :-) Спасибо всем.

Добавлено: 31 май 2006, 13:30
Max_Fin
Все очень просто - persons должен быть корневой таблицей!

Добавлено: 05 июн 2006, 11:50
siteadmin
выдумывать велосипед не стоит.
простой поиск по полям таблицы для любого визуального элемента работает только в том случае, если эта даблица, как прависльно сказал Максим - корневая для данного элемента. по полям же связанных таблиц поиск работать не будет.