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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2007, 15:20   #1  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
Дублирование записи
Есть таблица A с тремя полями (поле 1, поле 2, поле 3). Так же есть 5-ть таблиц, каждая из которых имеет 2 поля (поле 2, поле 3). Когда происходит операция записи, изменения или удаления в таблице A, необходимо отображать данное действие в одной из 5-и таблиц (выбор таблицы идет в зависимости от значения в поле 1). Каким образом лучше организовать данный процесс?

Можно ли рассматривать в качестве варианта создание класса для каждой таблицы, где будут реализовываться соответсвующие операции и с помощью фабрики создавать экземпляр нужного в зависимости от поля 1 таблицы A?
Старый 15.11.2007, 15:28   #2  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
А по моему данную задачу проще решить с помощью созданной Map для 5-ти таблиц, ну и одного оператора switch
Старый 15.11.2007, 15:32   #3  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
Каким образом?
Старый 15.11.2007, 15:43   #4  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
1. Создаем Map которая должна объеденить 5-ть наших таблиц.
2. В Map создаем метод для вставки, обновления и удаления.
3. А дальше на основании вашего параметра 1, необходимо для одной из 5-ти таблиц вызвать нужный метод Map-а
За это сообщение автора поблагодарили: Axaptus (1).
Старый 15.11.2007, 15:58   #5  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
так switch в этом случае будет в каждом из методов.
Старый 15.11.2007, 16:02   #6  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
так switch в этом случае будет в каждом из методов.
это вам решать, как и для какой записи из 5-ти таблиц вы вызовите метод MAP, напишите метод findTable(), который будет отыскивать нужную запись и для ее вызывать метод Map-а
Старый 15.11.2007, 16:19   #7  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
Похоже что я недопонимаю, попробую объяснить свое виденье ситуации.

Итак, допустим происходит следующая последовательность действий:

1. пользователь через форму создает новую строку в таблице A

тогда

2. я отлавливаю данное событие в методе initValue таблицы A и запускаю метод Map-а (допустим createCopy(ТаблицаA _таблицаA)), внутри которого через switch определяю в какую таблицу следует производить запись, т.е.

\Map\method\createCopy(ТаблицаA _таблицаA)
{
...
switch (_таблицаA::поле1)
{
case enum_тип_поля1::значение1:
{
...
break;
}
...
}
...
}

Это соответвует вашему алгоритму?
Старый 15.11.2007, 16:26   #8  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
Это соответвует вашему алгоритму?
метод switch должен определять для какой таблицы произвести вызов метода Map и он должен быть реализован в методе findTable()
Старый 15.11.2007, 16:40   #9  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
Ясно. Тогда вопрос другого плана: Как программно описать эту взаимосвязь между findTable и Map? Т.е. как нужно передать в Map полученную в findTable() таблицу? Не могли бы вы написать небольшой пример с реализацией findTable и связкой с Map допустим для добавления? Или дать ссылку на схожую ситуацию?
Старый 15.11.2007, 16:51   #10  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
вот пожалуйста разбирайтесь

\Data Dictionary\Tables\LedgerBudget\Methods\insert
\Data Dictionary\Tables\ForecastSales\Methods\update
\Data Dictionary\Maps\BudgetMap
Старый 15.11.2007, 17:21   #11  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Господа, мне кажется вы себе сильно усложняете жизнь.
Все можно реализовать гораздо проще.
В таблице А перекрыть 3 метода:
insert()
update()
delete()
И в каждом из этих методов вносить изменения в эти 5 таблиц в зависимости от поля поле1.
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 15.11.2007, 17:26   #12  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
Господа, мне кажется вы себе сильно усложняете жизнь.
Все можно реализовать гораздо проще.
В таблице А перекрыть 3 метода:
insert()
update()
delete()
И в каждом из этих методов вносить изменения в эти 5 таблиц в зависимости от поля поле1.
если логика очень простая тогда я с тобой соглашусь, но если данная логика будут услажнятся то это оптимальный вариант, использование MAP это своего рода использования механизма полиморфизма для таблиц т.е. то что в начале предлагали
Цитата:
Можно ли рассматривать в качестве варианта создание класса для каждой таблицы, где будут реализовываться соответсвующие операции и с помощью фабрики создавать экземпляр нужного в зависимости от поля 1 таблицы A?
Старый 16.11.2007, 12:33   #13  
Axaptus is offline
Axaptus
Участник
 
26 / 10 (1) +
Регистрация: 09.11.2007
Не, ребят, там только через Map или фабрику, просто потом все это завязано на дереве иначе теряется всякая гибкость.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
ALEG: Доступны записи тренингов по Microsoft Dynamics NAV Blog bot DAX Blogs 0 21.03.2007 15:00
Разграничение доступа на записи Роман Кошелев DAX: Функционал 11 26.07.2004 10:56
Автоматическое увеличение значения поля при создании новой записи. sguryev DAX: Программирование 3 06.02.2003 14:00
Паспорт записи (Автор и время создания/модификации) Андре DAX: Программирование 3 22.04.2002 21:15
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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