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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.01.2002, 16:42   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Имитация связи между таблицами из кода программы
Решил создать форму, на которой два Grid. В первом Gridе отображаются данные из таблицы Unit, во второй из UnitConvert. Я хочу сделать так, чтобы при перемещении курсора по первому гриду, во втором гриде отображались только те данные, которые относятся к выбранной единице измерения. По-моем эту задачу можно решить и созданием Relation, но я решил попробовать сделать это из кода программы.
Я перекрыл метод next у таблицы Unit и поместил в него следующий код, предварительно задав соответствующий Query:


К сожалению поставленной задачи достигнуть мне не удалось. Не могли бы Вы подсказать в чем дело ? Не могли бы Вы указать альтернативный(лучший) метод решения этой задачи ?
Вложения
Тип файла: img1175-1 (90.2 Кб, 649 просмотров)
Старый 30.01.2002, 18:38   #2  
dchered is offline
dchered
Участник
 
10 / 10 (1) +
Регистрация: 21.01.2002
Re: Имитация связи между таблицами из кода программы
Цитата:
Не могли бы Вы указать альтернативный(лучший) метод решения этой задачи ?
Наилучший метод - НЕ делать этого из кода программы. Чем плох Relation?

Но если очень хочется из кода - можно так:

1) в свойствах датасоурса UnitConvert задать JoinSource = Unit

2) перекрыть метод init() датасоурса UnitConvert и создать в нем range на нужное тебе поле таблицы UnitConvert. Для удобства лучше сохранить ссылку на этот range в глоб.переменной типа QueryBuildRange - пусть переменная называется qR.

3) перекрыть метод linkActive() в этом же датасоурсе - в нем присваивать конкретное значение для range - qR.value(Unit.UnitId). В конце метода вызвать super()
__________________
Дмитрий Чередниченко.
Старый 31.01.2002, 10:20   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
перекрыть метод init() датасоурса UnitConvert и создать в нем range на нужное тебе поле таблицы UnitConvert
Я пробую сделать это так:
PHP код:
public void init()
{
    
Query q;
    
QueryBuildDataSource qbds;

    
UnitConvert_ds.query();
    
qbds q.dataSourceNo(1);                                                                    // *
    
qR qbds.addRange(fieldNum(UnitConvert,FromUnit));

    
super();

Аксапта говорит, что объект Query не инициализирован. Причем сообщение появляется привыполнении строки (*).

Не могли бы Вы подсказать, как нужно это сделать ?
Старый 31.01.2002, 11:00   #4  
dchered is offline
dchered
Участник
 
10 / 10 (1) +
Регистрация: 21.01.2002
Цитата:
Изначально опубликовано Андре
Аксапта говорит, что объект Query не инициализирован. Причем сообщение появляется привыполнении строки (*).
Не могли бы Вы подсказать, как нужно это сделать ? [/B]
Объект Query инициализируется в super(). Перенеси вызов super() в начало метода.
__________________
Дмитрий Чередниченко.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Связи между таблицами 1:N и N:1 Jox DAX: Программирование 10 12.07.2006 10:17
Связи между таблицами. braathe DAX: Программирование 7 18.02.2005 18:40
связи между таблицами при установлении прав доступа Manner DAX: Администрирование 9 08.10.2004 22:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:05.