31.03.2005, 10:59 | #1 |
Участник
|
Как делается LookUp стандартынми средствами?
Если открыть Заказы - Разное, то там есть поля Группа договоро и Рег номер.
У поля рег. номер есть лукап - выводятся рег номера договоров только для этого клиента и для этой группы. Мне нужно сделать тоже самое для другой (своей) таболицы. Я так понял, что это всё сделано не через обычный LookUp на форме (или я его не увидел? - вот я баран) , а через relations. На таблице SalesTable есть три отношения для этого. Повторяю тоже самое для своей таблицы - не работает (выводятся все рег. номера). Что я еще не сделал? Не подскажите? Спасибо. |
|
31.03.2005, 12:51 | #2 |
Мрачный тип
|
Relation по большей части для ссылочной целостности делается.
А для ограничения или QueryBuildRange(больше работы) использовать надо или в своей форме в датасорсах указывать кто как подключен друг к другу . Там, правда, есть один подводный камушек, 'JoinSource' свойство - это не "подключить источник"(master), а "подключить к источнику"(slave). |
|
31.03.2005, 14:06 | #3 |
Участник
|
Не, ну как лукап переопределить и всё там сделать через QueryBuildRange я знаю.
Просто я начал смотреть станд. функционал, и смотрю, что там не так сделано, и хочется разобраться. Я сделал формочку - дата соурс сделал SalesTable и эти 3 поля на форму кинул - всё сразу работает. Значит это не на DS и не на форме делается, а где-то сразу на таблице... |
|
31.03.2005, 19:18 | #4 |
Участник
|
не знаю, наверное ты это сделал, но на всякий случай напишу.
В релайшн к таблице RContractTable указаны там всякие поля, т.д. так записи фильтруютя. А вот лукап вызывается потому, что в свойстве таблицы RContractTable FormRef указана menuItem (display) RContractTable Посмотри его и форму, соответственно RContractTable Может это как раз то что тебе нужно |
|
01.04.2005, 12:16 | #5 |
Участник
|
Вот вариант:
1. Рисуете свою LookUp форму, на ней грид с нужными полями и тд. В свойствах ставите Frame = Border; 2. У EDT на основе которого построено ваше поле в своей табличке пишете в FormHelp имя вновьсозданной формы; 2. В init формы или датасорса через args().Caller() получаете необходимые параметры и по ним рисуете запрос. |
|
01.04.2005, 12:52 | #6 |
Участник
|
Лукап делается следующими способами:
1. Релайшны таблиц делают подфильтровку, группа AutoLookup таблицы с выбираемыми значениями дает список полей лукап-формы (добавляется поле из праймари ки туда же) 2. Переопределяется метод lookup таблицы ( используется SysTableLookup - поиск в хелпе) 3. Переопр тот же метод датасорса (филда) 4. Переопр тот же метод контрола формы В методах 3 и 4 необходимо использовать написанную форму лукапа (сохрняется в АОТ) Есть еще метод с использованием указанием формы для лукапа на EDT "лукапимой" колонки, но у меня он что-то не пошел и я его не применял. Других способов нет. Ищите в указанном порядке. Ред: Да еще один метод (не думаю, что реально используемый): 0. Если ничего из вышеперечисленного нет, то для лукапа берутся поля из TitleField1 , TitleField2 и праймари ки |
|