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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2006, 08:57   #1  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
И снова Query и временные таблицы
Есть следующий код (отрывок)

qr3 = new QueryRun(q3);
qr3.setCursor(t);

while (qr3.next())
{
balanceListTable = qr3.get(tablenum(IZH_BalanceListTable));
inventDim = qr3.get(tablenum(inventDim));
inventTable = InventTable::find(balanceListTable.ItemId);
.....................
}
t инстанс таблицы которая объявлена как Temporary = Yes
заполнялась типа на сервере
t = IZH_BalanceListTable::initOnServer();
.......
t.insert()
клиент работает в 3х звенке Ax3 SP4

вопрос следующий
пока таблица временная результат работы query какой то левый то есть InventDim подтянут криво или не подтянут совсем

ставлю у таблицы Temporary в No результат выборки выдает как раз то что нужно

скажите где еще что я забыл при работе с временными таблицами
Старый 07.12.2006, 09:15   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Во-первых проверьте, insert первой записи временной таблицы ТОЧНО на сервере отрабатывает? (кстати - для этого есть смысл заглянуть двухуровневой конфигурацией)
Ну а во-вторых - как уже неоднократно писалось - никто не гарантирует в Аксапте нормальную работу джойна постоянных и временных таблиц. Т.е. если это работает - хорошо... Но это может и не работать.
__________________
Возможно сделать все. Вопрос времени
Старый 07.12.2006, 10:02   #3  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
мда как все запущено
Старый 07.12.2006, 10:30   #4  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Временные таблицы для трехуровневой конфигурации заполняются на клиенте. Поэтому модификаторы вызова лучше всего поставить в "Called From"
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 07.12.2006, 11:10   #5  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
Временные таблицы для трехуровневой конфигурации заполняются на клиенте. Поэтому модификаторы вызова лучше всего поставить в "Called From"
Не правда. Временные таблицы создаются там, где идет первый insert ИЛИ первый select.

Def, покажите, пожалуйста, IZH_BalanceListTable::initOnServer() ...

Последний раз редактировалось vallys; 07.12.2006 в 11:16.
Старый 07.12.2006, 11:26   #6  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от vallys Посмотреть сообщение
Не правда. Временные таблицы создаются там, где идет первый insert ИЛИ первый select.

Def, покажите, пожалуйста, IZH_BalanceListTable::initOnServer() ...
Я говорил не об общем правиле, а конкретном. Вызов наверняка идет из формы, а не из класса. Так что первая запись будет инициироваться клиентской частью. Может я ошибся, и это обрабочик запихнули в класс, но скорее всего это вывод данных запроса в форму.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 07.12.2006, 11:32   #7  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
Я говорил не об общем правиле, а конкретном. Вызов наверняка идет из формы, а не из класса. Так что первая запись будет инициироваться клиентской частью. Может я ошибся, и это обрабочик запихнули в класс, но скорее всего это вывод данных запроса в форму.
Извините, погорячился
Судя по куску кода - чтобы узнать, где инициализизуется первая запись, нужно увидеть IZH_BalanceListTable::initOnServer()... Хотя я склонен предположить, что там все "чисто"
Старый 07.12.2006, 15:39   #8  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
static server IZH_BalanceListTable initOnServer()
{
IZH_BalanceListTable balanceListTable;
;
select firstonly balanceListTable;
return balanceListTable;
}

еще писал для вставки
static server void insertOnServer(IZH_BalanceListTable balanceListTable)
{
balanceListTable.insert();
}
Старый 07.12.2006, 15:42   #9  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
и еще это метод класса у которого стоит CalledFrom
а вызывается класс когда жмут на кнопку на некой форме
Старый 07.12.2006, 15:46   #10  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
кстати получил информацию что в 3х звенке табличка все равно не будет создана на сервере базы данных а будет на AOS и вследствие этого могут быть проблемы (тоже версия)
Старый 07.12.2006, 15:54   #11  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
всем спасибо Господа!

я решил забить на все и сделать одним из двух вариантов

1. Длеаю таблицу НЕ временной ввожу туда пользователя и сессию для того чтобы данные от двух пользоватлей не клеились и работаю спокойно с табличкой

2. Оставляю табличку временной но денормализую результат, то есть нужные поля InvenDim складываю в эту табличку
Старый 07.12.2006, 16:02   #12  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Def, а у Вас, случайно, InventDim соеденялся с временной не по QueryFetchMode::One2Many?

Последний раз редактировалось vallys; 07.12.2006 в 16:04.
Старый 07.12.2006, 16:26   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Def, вы совершенно неправильно работали с временной таблицей - во всяком случае, создается такое впечатление по тем кускам кода, которые вы показали.
Поэтому и не работало
Старый 07.12.2006, 17:00   #14  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
while select [поля] from [табличная переменная]
group by [поля]
where
[условия]
{
[табличная переменная tmp].[поле] = ...;
.
.
[табличная переменная tmp].insert();
}
[datasource].setTmpData([табличная переменная tmp]);
все нормально работает
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 07.12.2006, 17:09   #15  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ключевой момент, что вызвается метод setTmpData и что вызывается он в той же области видимости, что и табличная переменная временной таблички (то есть она еще не удалилась)
Старый 08.12.2006, 07:35   #16  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
Цитата:
Сообщение от vallys Посмотреть сообщение
Def, а у Вас, случайно, InventDim соеденялся с временной не по QueryFetchMode::One2Many?
нет
к тому же я упоминал что если таблицу сделать НЕ временной результат верный
Старый 08.12.2006, 07:36   #17  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
while select [поля] from [табличная переменная]
group by [поля]
where
[условия]
{
[табличная переменная tmp].[поле] = ...;
.
.
[табличная переменная tmp].insert();
}
[datasource].setTmpData([табличная переменная tmp]);
все нормально работает
я не использую результат для отображения на форме а просто вывожу этот результат в EXCEL
Старый 08.12.2006, 07:37   #18  
Def is offline
Def
Участник
 
50 / 32 (2) +++
Регистрация: 28.09.2005
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Def, вы совершенно неправильно работали с временной таблицей - во всяком случае, создается такое впечатление по тем кускам кода, которые вы показали.
Поэтому и не работало

хм в чем же основная ошибка поясните пожалуйста
Старый 08.12.2006, 08:50   #19  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Def Посмотреть сообщение
я не использую результат для отображения на форме а просто вывожу этот результат в EXCEL
А способ вывода данных (форма, файл) уже не играет роли: это только интерфейс вывода.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 08.12.2006, 15:46   #20  
zelen is offline
zelen
Участник
 
64 / 13 (1) ++
Регистрация: 08.11.2004
Адрес: г.Москва
Объясните плз цепочку работы объектов? Что где заполняется и как передается? В каком объекте у вас идет вывод в Excel?

Последний раз редактировалось zelen; 08.12.2006 в 16:21.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Advanced query range value expressions: поле таблицы - имя вcтроенной функции year(). ATimTim DAX: Программирование 12 27.03.2009 18:16
Сново про временные таблицы Andrux DAX: Программирование 16 11.07.2007 14:57
И опять временные таблицы ek_Pendulum DAX: Программирование 22 07.05.2007 11:30
Снова временные таблицы vasiliy DAX: Программирование 7 12.03.2007 13:54
Не страшно ли временные таблицы временно сделать постоянными? Gustav DAX: Программирование 11 09.02.2006 11:04

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

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

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