AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

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

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

По сути - есть сомнения...
__________________
Zhirenkov Vitaly
Old 21.12.2011, 14:41   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by Pustik View Post
привязанных к одной и той же временной таблице.
Т.е. в свойствах датасорсов вы указали одно и тоже имя временной таблиц, и не забыли сделать setTmpData? Потому что без setTmpData два экземпляра временных таблиц никак не связаны друг с другом.
Old 21.12.2011, 14:43   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Join Date: 04.06.2004
Вот проект
Attached Files
File Type: xpo TestTmpTableProject.xpo (5.9 KB, 416 views)
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Old 21.12.2011, 14:49   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
setTmpData
Old 21.12.2011, 15:11   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Join Date: 04.06.2004
Quote:
Originally Posted by S.Kuskov View Post
Потому что без 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(); // второй датасорс
все равно работать не будет. Показывать записи будет только первый грид
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Old 21.12.2011, 15:17   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by Pustik View Post
все равно работать не будет. Показывать записи будет только первый грид
Ну вы же только первому сделали setTmpData. Сделайте ещё
X++:
TestTmpTable1.setTmpData(_TestTmpTable);
This post has been rated by: Pustik (3).
Old 21.12.2011, 15:19   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Join Date: 04.06.2004
блин, вот так будет работать
X++:
TestTmpTable.setTmpData(_TestTmpTable);
TestTmpTable1.setTmpData(_TestTmpTable);
Хоть и указана одна таблица у обоих датасорсов он не понимает ее во втором.
Значит созданные 2 датасорса и привязанные к одной временной таблице, это тоже 2 разных экземпляра, так же как и объявленные две переменные на одну и тоже таблицу.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 04:34.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.