AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.10.2002, 11:12   #1  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
? LookUp
Подскажите, пожалуйста!

Кто-нибудь накладывал фильтр, но lookup по соседнему полю в таблице, т. е.,
в первом поле я выбираю группу из первой таблице, а во втором мне необходимо с помощью lookup выбрать члена этой группы, и логично, если lookup вывел только членов этой группы, а не всех, кто есть в этой таблице.
Старый 09.10.2002, 19:49   #2  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Фильтр накладывается при наличии relation между таблицами, в котором эти два поля задействованы. Пример: таблица WMSPallet.

НО. вопрос в том, что должно быть, если в первом (соседнем) поле пусто. При наличии relation система выведет только записи у которых поле группы пустое. Если же надо чтобы фильтр в этом случае не накладывался, то есть вариант нарисования собственной формы lookupа и наложение нужных фильтров из методов формы.
Старый 09.10.2002, 20:05   #3  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
?
2-ое поле может быть выбранным только после заполнения 1-ого, но, не смотря на наличие relation между этими таблицами, оно не работает и это, наверное, правильно, т. к. relation начинает работать тогда, когда открыта первая таблица (родитель), а в моем случае обе таблицы закрыты, а вибираються только Id их записей и заполняются в третью. Возможно, необходимо создать relation для этой третьей таблице???
Старый 09.10.2002, 22:21   #4  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Thumbs down
Я вот уже совсем ничего не понимаю....
Старый 10.10.2002, 09:32   #5  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
:(
Есть строка в таблице в которую необходимо заполнить последовательно -
сначало ID группы в первый столбец, затем следующее поле этой строки нужно заполнить ID члена принадлежащего к этой группе, но при появлении LOOKUP-а для выбора членов группы он должен вывести только строки группы выбранной в первом поле.
Группы и члены групп находяться в разных таблицах и имеют между собой relation.
Старый 10.10.2002, 10:23   #6  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Мдаас.... Пора объясниться по терминологии, а то названия типа "первая таблица" и пр. нас далеко заведут.

Берем конкретный пример, который я уже указал выше: таблица WMSPallet.
В таблице заполняются поля InventLocationId и wmsLocationId.
Между таблицами WMSPallet и InventLocation есть связь по расширенному типу данных InventLocationId, поэтому мы можем спокойно выбирать склад для паллеты.
Между таблицами WMSLocation и InventLocation есть точно такая же связь, которая позволяет выбрать склад для каждой паллеты.
А вот между таблицами WMSPallet и WMSLocation связь сделана в виде relation на таблице WMSPAllet в котором задействованы поля InventLocationId и WMSLocationId. Поэтому при выборе кода ячейки для паллеты, в lookup выводится отфильтрованный список (фильтрация по коду склада, выбранного в поле WMSPallet.InventLocationId).

Насколько я понял - этого нам и надо было...
Старый 10.10.2002, 10:25   #7  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
В данном случае relations между таблицами ни на что не влияют, т.к. системе, открывающей lookup на каком-либо поле таблицы, совершенно наплевать на содержимое других полей этой таблицы. Но ее (систему) можно переубедить , для чего нужно перекрыть метод lookup(), в нем использовать класс SysTableLookup, у которого изменить Query и т.д. Пример: таблица WMSLocation метод lookupLocationId()
__________________
Андрей.
Старый 10.10.2002, 11:14   #8  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Слона-то я и не увидел! Действительно, при выборе ячейки всегда вызывается форма WMSLocationIdLookup в которой обрабатывается контекст вызова, примерчик приведен не очень корректный

НО! Relation между таблицами действуют так, как я написал выше. Надо только, чтобы связи типа у поля в котором мы делаем выбор, не перекрывали связи таблицы.
Старый 10.10.2002, 11:20   #9  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
:(
Насколько я понял, связями тут ничего не сделаешь, единственный способ перекрывать метод, чего, собственно, я хотел избежать.
Старый 10.10.2002, 11:55   #10  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
!
Приложен примерчик в котором нет ни одной строки кода и при этом, при выборе значения в поле tst_List.elementId значения фильтруются по полю tst_List.groupId.
Вложения
Тип файла: xpo rel.xpo (13.9 Кб, 300 просмотров)
Старый 10.10.2002, 12:13   #11  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Сорри, был неправ, поторопился с ответом! Relations forever!
__________________
Андрей.
Старый 10.10.2002, 14:44   #12  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
?
Я не совсем понял фразу - "Надо только, чтобы связи типа у поля в котором мы делаем выбор, не перекрывали связи таблицы." если можно поподробнее.
И зачем сделан тип tst_elementIdLookup в примере, или это какраз то, о чем говорит эта фраза????????
Старый 10.10.2002, 15:15   #13  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
Все, спасибо, я все понял, вся фишка в отсутствии релейшина типа поля tst_elementId, а tst_elementIdLookup не нужен, он только путает, и без него все работает.
Старый 11.10.2002, 15:34   #14  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Классный пример.
НО!
Есть одно но!
В результате таких манипуляций со связями нарушается стандартное поведение Аксапты.
При таком программировании нельзя будет перейти к основной таблице для ее редактирования! (ctrl-Alt-F4)
Это происходит потому, что типы данных определенных для полей в таблице List не ссылаются напрямую на нужные поля в таблицах-справочниках. А для поля GroupId вообще появляется неоднозначность связывания (по типу поля - с таблицей групп, по релейшну - с таблицей елементов) и неизвестно как еще это все отразится при дальнейшей работе.

Вывод.
Так программировать НЕЛЬЗЯ.
Лучше уж переопределить lookup()чик
Тем более что там кода надо написать всего 10 строк. а может и меньше.
И стандартный функционал останется и задача будет решена.
Старый 11.10.2002, 15:46   #15  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ну, перепрограммировать и переход к основной таблице можно

А вообще, это была скорее "демонстрация мышц". Поддерживаю ta_and: лучше перепрограммировать lookup.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 11.10.2002, 15:48   #16  
art is offline
art
Участник
 
46 / 10 (1) +
Регистрация: 11.06.2002
Адрес: Москва
Конечно 100%-ой гарантии что все будет работать правильно дать нельзя, для этого надо окапаться в кишках Ахапты, но у меня, вариант с исправлениями, приведенными мною выше, работает без проблем, и к главной таблице переходит...
Старый 11.10.2002, 17:35   #17  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Заметьте, что при использовании типов и связей объем исправлений несколько возрастает (даже, скорее, не объем, а "география" исправлений ). Все же аккуратней добавить маленький метод lookup с соответствующими комментариями.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gatesasbait: How to define a custom lookup form for an extended datatype Blog bot DAX Blogs 0 09.07.2008 22:05
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Нагло глючит lookup Sada DAX: Программирование 1 08.06.2006 10:32
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07
Произвольная Lookup форма Maxim Gorbunov DAX: База знаний и проекты 0 30.11.2001 21:59

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.