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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2011, 14:22   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
2 датасорса и одна временная таблица на форме.
Добрый день. AX2009,Axapta3.0
Сегодня познакомился еще с одним сюрпризом от временных таблиц.
Если на форме создать 2 датасорса, привязанных к одной и той же временной таблице. Создать на этой форме 2 грида. Один будет привязан к первому датасорсу, второй ко второму. Ну и снизу кнопочку, которая добавит в эту временную таблицу пару записей и сделает executeQuery() обоих датасорсов. В первом гриде мы увидим записи, во втором нет. Как только табличку сделать не временной работают оба грида. Зато с использованием setTmp() на нормальной таблице опять таже хрень. Мне интересно это что?????? Фича такая? Бага? Или "просто так нельзя делать"? Или "не для этого временные таблицы существуют"?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 21.12.2011 в 14:28.
Старый 21.12.2011, 14:34   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Pustik Посмотреть сообщение
Добрый день. AX2009,Axapta3.0
Сегодня познакомился еще с одним сюрпризом от временных таблиц.
Если на форме создать 2 датасорса, привязанных к одной и той же временной таблице. Создать на этой форме 2 грида. Один будет привязан к первому датасорсу, второй ко второму. Ну и снизу кнопочку, которая добавит в эту временную таблицу пару записей и сделает executeQuery() обоих датасорсов. В первом гриде мы увидим записи, во втором нет. Как только табличку сделать не временной работают оба грида. Зато с использованием setTmp() на нормальной таблице опять таже хрень. Мне интересно это что?????? Фича такая? Бага? Или "просто так нельзя делать"? Или "не для этого временные таблицы существуют"?
Все должны быренько накидать у себя примерчик и проверить?
Или всё-таки проектик вложите?

По сути - есть сомнения...
__________________
Zhirenkov Vitaly
Старый 21.12.2011, 14:41   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Pustik Посмотреть сообщение
привязанных к одной и той же временной таблице.
Т.е. в свойствах датасорсов вы указали одно и тоже имя временной таблиц, и не забыли сделать setTmpData? Потому что без setTmpData два экземпляра временных таблиц никак не связаны друг с другом.
Старый 21.12.2011, 14:43   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Вот проект
Вложения
Тип файла: xpo TestTmpTableProject.xpo (5.9 Кб, 412 просмотров)
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 21.12.2011, 14:49   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
setTmpData
Старый 21.12.2011, 15:11   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Потому что без setTmpData два экземпляра временных таблиц никак не связаны друг с другом.
Я знаю, что без этого это два разных объекта. У меня тупой пример, где 2 датасорса привязаны к одной таблице. Можно даже обойтись без кнопочки. Допустим у нас временная таблица называется TestTmpTable. На форме ничего кроме 2-ух датасорсов и 2-ух гридов, настроенных так как я описал выше. Можно описать одну переменную в форме TestTmpTable _TestTmpTable; , в ините написать такое :
X++:
    _TestTmpTable.Field1 = '111';
    _TestTmpTable.Field2 = '111';
    _TestTmpTable.insert();
    _TestTmpTable.Field1 = '222';
    _TestTmpTable.Field2 = '222';
    _TestTmpTable.insert();

    TestTmpTable.setTmp();
    TestTmpTable.setTmpData(_TestTmpTable);

    TestTmpTable_ds.executeQuery(); // первый датасорс
    TestTmpTable1_ds.executeQuery(); // второй датасорс
все равно работать не будет. Показывать записи будет только первый грид
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 21.12.2011, 15:17   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Pustik Посмотреть сообщение
все равно работать не будет. Показывать записи будет только первый грид
Ну вы же только первому сделали setTmpData. Сделайте ещё
X++:
TestTmpTable1.setTmpData(_TestTmpTable);
За это сообщение автора поблагодарили: Pustik (3).
Старый 21.12.2011, 15:19   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
блин, вот так будет работать
X++:
TestTmpTable.setTmpData(_TestTmpTable);
TestTmpTable1.setTmpData(_TestTmpTable);
Хоть и указана одна таблица у обоих датасорсов он не понимает ее во втором.
Значит созданные 2 датасорса и привязанные к одной временной таблице, это тоже 2 разных экземпляра, так же как и объявленные две переменные на одну и тоже таблицу.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 21.12.2011 в 15:21.
Старый 21.12.2011, 15:24   #9  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ну вы же только первому сделали setTmpData. Сделайте ещё
X++:
TestTmpTable1.setTmpData(_TestTmpTable);
Опередили , торможу .
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 21.12.2011, 15:27   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Pustik Посмотреть сообщение
Хоть и указана одна таблица у обоих датасорсов он не понимает ее во втором.
В общем случае имя датасурса (имя переменной) может не совпадать с именем таблицы (именем типа данных). SetTmpData работает не с абстрактной таблицей-типом, а с конкретными экземплярами-переменными.
Старый 21.12.2011, 15:42   #11  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В общем случае имя датасурса (имя переменной) может не совпадать с именем таблицы (именем типа данных). SetTmpData работает не с абстрактной таблицей-типом, а с конкретными экземплярами-переменными.
У меня была задача в двух гридах отобразить один и тот же пакет данных, только с разными критериями. Весь пакет данных собирается во временную табличку. Я изначально подумал, что указав одну и ту же таблицу в разных датасорсах я ее легко решу, и она у меня заработает так же, как это работает и на обычных таблицах. Без setTmpData не обойтись. А ведь делал такое когда-то . Давно с временными не работал. Все больше на память и кэш налегаем.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Group by и временная таблица S.Kuskov DAX: Программирование 31 16.01.2015 10:25
dataSetLookup(), временная таблица и Query rDenis2 DAX: Программирование 3 19.05.2010 00:22
Временная таблица Antoncheg DAX: Программирование 21 15.08.2008 18:25
select sum(amount) from временная таблица ATimTim DAX: Программирование 6 11.06.2004 14:16
next и временная таблица Dron AKA andy DAX: Программирование 3 24.04.2003 16:42

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

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

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