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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.07.2019, 17:06   #1  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Передача таблицы TempDB по маршруту класс1-форма-класс2, как правильно?
Здравствуйте. Столкнулся с такой задачей: есть форма, на которой выводятся данные из нескольких временных таблиц TempDB. Таблицы эти заполняются в классе myClass1 и передаются на форму через методы myClass1.parmTempDB() и через linkPhysicalTableInstance связываются с соответствующими датасурсами. Всё работает.

Теперь нужно данные из формы вывести на печать. Соответственно, как это правильно сделать? Я создаю класс myClass2 для печати, вешаю menuItem для его вызова на форму и через через args передаю в myClass2 экземпляр myClass1, а в ините myClass2 получаю через методы myClass1.parmTempDB(). Но в этом случае linkPhysicalTableInstance не работает, выдаётся сообщение "Невозможно выполнить требуемую операцию с базой данных. Метод применим только к переменным таблицы TempDB, не связанным с существующим физическим экземпляром таблицы". Но если в init myClass2 написать

X++:
myTempDB1 = caller.parmMyTempDB1();
всё работает. Вопрос, насколько допустимо и правильно передавать таким образом tempDB-таблицы?

Или может быть, мне вообще надо получать в myClass2 временные таблицы не из исходного класса myClass1, а с формы?

Подскажите, пожалуйста, как правильно?

2012 R3
Старый 10.07.2019, 23:53   #2  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
а myClass2-то что конкретно делает и где?
__________________
Felix nihil admirari
Старый 11.07.2019, 08:18   #3  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от wojzeh Посмотреть сообщение
а myClass2-то что конкретно делает и где?
На клиенте наполняет шаблон Word и показывает пользователю.
Старый 11.07.2019, 08:26   #4  
axm2017 is offline
axm2017
Участник
 
1,913 / 308 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от mikki_messer Посмотреть сообщение
... Но в этом случае linkPhysicalTableInstance не работает, выдаётся сообщение "Невозможно выполнить требуемую операцию с базой данных. Метод применим только к переменным таблицы TempDB, не связанным с существующим физическим экземпляром таблицы"...
Подскажите, пожалуйста, как правильно?
Если посмотреть код МС то подобная проблема решается в SSRS через вызов не особенно документированных
useExistingTempDBTable
takeOwnershipOfTempDBTable

Использование можно глянуть в SrsReportProviderQueryBuilder
или посмотреть поиском по
SrsReportPreProcessedDetails::getTempDbNamesMapFromReportPreProcessedDetails

Как вариант решения возможно прокатит
За это сообщение автора поблагодарили: -DocSerzh- (1), S.Kuskov (5).
Старый 11.07.2019, 08:39   #5  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Если посмотреть код МС то подобная проблема решается в SSRS через вызов не особенно документированных
useExistingTempDBTable
takeOwnershipOfTempDBTable

Использование можно глянуть в SrsReportProviderQueryBuilder
или посмотреть поиском по
SrsReportPreProcessedDetails::getTempDbNamesMapFromReportPreProcessedDetails

Как вариант решения возможно прокатит
Благодарю, посмотрю обязательно!
Старый 11.07.2019, 20:56   #6  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
не понял. если и форма и ворд на клиенте, то зачем ещё что-то передавать? бери ссылку на буфер и делай выборку while select

или я что-то упускаю?

если желаешь посмотреть, как глубока кроличья нора, то велкам https://alexvoy.blogspot.com/2019/02...ed-in-cil.html
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: mikki_messer (1).
Старый 15.07.2019, 14:16   #7  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от wojzeh Посмотреть сообщение
не понял. если и форма и ворд на клиенте, то зачем ещё что-то передавать? бери ссылку на буфер и делай выборку while select

или я что-то упускаю?

если желаешь посмотреть, как глубока кроличья нора, то велкам https://alexvoy.blogspot.com/2019/02...ed-in-cil.html
Я ж и задумался, как правильно: заполняется временная таблица на сервере, потом отображается на клиенте (форма), а потом её надо напечатать, тоже на клиенте (класс). Сейчас и в ините формы, и в классе печати я получаю её из исходного класса на сервере. Может, надо передавать в класс печати с формы и не городить огород?
Старый 15.07.2019, 16:07   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
это зависит от постановки бизнес-задачи. между выводом на форме и печатью отчёта искомые данные могут измениться. отсюда и пляши.
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: mikki_messer (1).
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное воссоздание записей SqlDictionary для определенной таблицы gl00mie DAX: Программирование 17 04.05.2023 20:13
InMemory and TempDB in joins on forms Blog bot DAX Blogs 0 11.04.2017 08:11
Axilicious:Permission denied in database ‘TempDB’ Blog bot DAX Blogs 0 27.01.2015 18:11
передача временной таблицы с клиента на сервер Eldar9x DAX: Программирование 30 27.07.2012 12:05
Как правильно именовать временные таблицы Владимир Максимов DAX: Программирование 22 17.05.2011 21:03

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

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

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