AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 09.02.2007, 17:39   #1  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
tmpTable и Grid
разъясните бедолаге, как можно отобразить временную таблицу на грид. Отрабатывает класс импорта файла в АХ. И данные эти нужно отобразить на гриде.Понимаю, что нужно инициализировать и в qwery прописать.Пыталась сделать следующее...прописать в init(){..... qbds = this.query().dataSourceTable(TableNum(TmpTable)); } и public ... TmpTable_DS.query().dataSourceTable(TableNum(ERG_TmpTable)); А что ещё нужно - ума ни приложу (
можете посоветуете что-н. из стандартного, чтобы хоть посмотреть, как делается...
Alt 09.02.2007, 17:42   #2  
DenNik ist offline
DenNik
Участник
 
62 / 9 (1) +
Registriert seit: 24.05.2005
Я так понимаю табличка уже заполнена?
Тогда tmpTable.setTmpData(tmpTable);
Alt 09.02.2007, 17:44   #3  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
пробывала не помогло (
Alt 09.02.2007, 17:47   #4  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
Воспользуйтесь методом SetTmpData.

(Подразумеваю что временная таблица заполнена в классе и передана на форму, далее с помощью метода SetTmpData временная таблица датасоурса сопоставляется с переданной таблицей)

upd: Уже сказали
Alt 09.02.2007, 17:49   #5  
Gad ist offline
Gad
Участник
 
136 / 18 (1) ++
Registriert seit: 21.05.2003
Ort: Москва
Zitat:
Zitat von DenNik Beitrag anzeigen
Тогда tmpTable.setTmpData(tmpTable);
все правильно, нужно только в качестве параметра setTmpData() активный (заполненный) курсор передать
Alt 09.02.2007, 17:54   #6  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
Zitat:
Zitat von fialka Beitrag anzeigen
qbds = this.query().dataSourceTable(TableNum(TmpTable)); }
Поправьте, если не прав, но формировать query для временной таблицы бессмысленно, т.к. это объекты создающиеся только приложением, а не базой данных.
Alt 09.02.2007, 17:55   #7  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
Zitat:
Zitat von DreamCreator Beitrag anzeigen
Поправьте, если не прав, но формировать query для временной таблицы бессмысленно, т.к. это объекты создающиеся только приложением, а не базой данных.
да, это действительно , так .. осталось с тех времён , пока табл. была неВременная.. ) забыла убрать...
Alt 09.02.2007, 17:57   #8  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
Zitat:
Zitat von Gad Beitrag anzeigen
все правильно, нужно только в качестве параметра setTmpData() активный (заполненный) курсор передать
Сделала на ините формыpublic void init(){ super(); TmpTable_ds.cursor().setTmpData(ERG_TmpTable);}Но ничего не изменилось...
Alt 09.02.2007, 18:04   #9  
Lemming ist offline
Lemming
Участник
Benutzerbild von Lemming
 
1.144 / 343 (14) ++++++
Registriert seit: 20.04.2004
Ort: Москва, Чайнатаун в Люблино
Blog-Einträge: 10
Zitat:
Zitat von DreamCreator Beitrag anzeigen
Поправьте, если не прав, но формировать query для временной таблицы бессмысленно, т.к. это объекты создающиеся только приложением, а не базой данных.
http://forum.mazzy.ru/index.php?showtopic=2898&hl=
This post has been rated by: DreamCreator (1).
Alt 09.02.2007, 18:04   #10  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
fialka, пользуйтесь пожалуйста тегом [xpp] для выделения кода

X++:
void init()
{ 
    super(); 
    TmpTable_ds.setTmpData(ERG_TmpTable);
}
при этом ERG_tmpTable должна быть уже заполнена.
(то есть если напишите select count(recId) from ERG_tmpTable, то вернет в поле RecId не 0
Alt 10.02.2007, 10:22   #11  
DenNik ist offline
DenNik
Участник
 
62 / 9 (1) +
Registriert seit: 24.05.2005
Zitat:
Zitat von fialka Beitrag anzeigen
...
Код в студию... А то так долго можно гадать
Alt 10.02.2007, 14:35   #12  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
есть такая идея. Если датасорс создан по временной таблице, то нужно на этой самой таблице создать метод, который ее заполнит, то есть что то вроде этого:
X++:
void fill()
{
    Table_tmptst table_tmptst;
    ;
    while select table_tmptst
    {
        this.Field1 = table_tmptst.Field1;
        this.Field2 = table_tmptst.Field2;
        this.Field3 = table_tmptst.Field3;
        this.insert();
    }
}
то есть заполняем данный экземпляр какими то данными (в этом случае - из таблицы table_tmptst).
Затем в init() формы просто вызываете данный метод после super(). И тогда, если источником данных Грида служит датасорс формы по временной таблице, все отобразится. Что интересно, не нужно никаких setTmpData(), почему, хотелось бы узнать...
Alt 10.02.2007, 15:14   #13  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Я не уверен, что правильно понял суть последней идеи, но если речь идет о том, что при открытии формы в буфер одного из источников данных формы будут вставляться записи, рассчитанные на сервере, то это плохая идея.

Если временная таблица содержит большое количество записей, то на небыстром канале форма будет открываться с большой задержкой, что будет приводить в гнев пользователей.

Обычно при открытии формы с сервера забирается только n-е количество записей. Остальные подтягиваются по мере необходимости. Например, если вы случайно открыли форму... пусть будет проводок по номенклатуре... ну ошиблись... ткнули не туда... А теперь представьте, что вы не туда ткнули, и ждете открытия формы столько, сколько строится отчет Складские проводки из модуля УЗ (желательно проверять на хорошо напичканной данными базе). Либо можете взять для тестирования отчет по проводкам по клиентам, если у вас там много данных.

setTmpData() позволяет... ну если простым человеческим языком, то сказать, что источник данных — это "вон та таблица" (которая рассчитана на сервере). Если данные из таблицы, которая рассчитана на сервере, понадобятся на клиенте, то они будут передаваться по мере необходимости (см. руководство разработчика, раздел "Temporary tables"). При открытии формы Аксапта считает с сервера только часть данных временной таблицы. Т.о. от времени расчета всей таблицы на сервере вы никуда не убежите, а вот от загрузки канала лишним трафиком — вполне.

Я понимаю, что большинство работают в предах 100 MBt сетей, и с трудом себе могут представить, как оно работается в Аксапте на тонких каналах, но кто знает, что (хорошего) может случиться с вашей компанией, и какими словами о вас потом будут вспоминать пользователи и ваши коллеги, которые будут разбираться с вашим кодом?
__________________
С уважением,
glibs®
Alt 10.02.2007, 19:12   #14  
Eldar9x ist offline
Eldar9x
MCTS
Benutzerbild von Eldar9x
Oracle
MCBMSS
 
1.064 / 166 (8) ++++++
Registriert seit: 29.09.2006
Ort: Казань
...ну тогда применительно к предыдущему решению - в свойствах грида нужно указать датасорс. Уж не знаю почему, но без этого не работает... Fialka, а код выглядит так?:
X++:
public void init()
{
    super();
    tmpTable_tmptst.settmpdata(<>::<,  ..   >());

}

Geändert von Eldar9x (10.02.2007 um 19:25 Uhr)
Alt 12.02.2007, 12:59   #15  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
Zitat:
Zitat von Eldar9x Beitrag anzeigen
...ну тогда применительно к предыдущему решению - в свойствах грида нужно указать датасорс. Уж не знаю почему, но без этого не работает... Fialka, а код выглядит так?:
X++:
</p><p>public void init()</p><p>{</p><p> super();</p><p> tmpTable_tmptst.settmpdata(<класс>::<метод, заполняющий вр.табл. и возвращающий ее>());</p><p>&nbsp;</p><p>}</p><p>

в свойствах грида сразу указала темповскую таблицу. а инит так и выглядит, только всё равно. Класс заполняет таблицу, потом метод на самой таблице заполняет её же. А после обработки открывается форма - пустая... что ещё упустила , не знаю
Alt 12.02.2007, 13:27   #16  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Выложите проект. Хотябы формы. Класс точно возвращает данные?
__________________
С уважением,
glibs®
Alt 12.02.2007, 13:39   #17  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Еще есть такой маленький ньюанс. Во всяком случае, я по-моему натыкался неоднократно.

вместо
X++:
    tmpTableDataSource.setTmpData(myEngine.tmptableData());
нужно так
X++:
    tmptableData tmpTableDataTmp;
    ;
    tmpTableDataTmp = myEngine.tmptableData();
    tmpTableDataSource.setTmpData(tmpTableDataTmp);
    //Ну и не забудьте после этого сделать 
    tmpTableDataSource_ds.executeQuery(); ( research())
Alt 12.02.2007, 15:58   #18  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
Zitat:
Zitat von glibs Beitrag anzeigen
Выложите проект. Хотябы формы. Класс точно возвращает данные?
Вот проект. В класе таблица заполняется в методе createLine. А форма пустая
Angehängte Dateien
Dateityp: zip test.zip (8,5 KB, 102x aufgerufen)
Alt 12.02.2007, 16:18   #19  
fialka ist offline
fialka
Участник
 
347 / 16 (1) ++
Registriert seit: 05.10.2006
Ort: Екатеринбург
Zitat:
Zitat von kashperuk Beitrag anzeigen
Еще есть такой маленький ньюанс. Во всяком случае, я по-моему натыкался неоднократно.

вместо

X++:
</p><p> tmpTableDataSource.setTmpData(myEngine.tmptableData());</p><p>



нужно так

X++:
</p><p> tmptableData tmpTableDataTmp;</p><p> ;</p><p> tmpTableDataTmp = myEngine.tmptableData();</p><p> tmpTableDataSource.setTmpData(tmpTableDataTmp);</p><p> //Ну и не забудьте после этого сделать </p><p> tmpTableDataSource_ds.executeQuery(); (или research())</p><p>

Это в ините на DS или на самой форме?
И что у вас в данном случае myEngine?
Alt 12.02.2007, 16:26   #20  
Jony ist offline
Jony
Участник
 
99 / 22 (1) +++
Registriert seit: 25.06.2003
Ort: г. Барнаул
по проекту
1- Временная таблица должна существовать (ссылка на нее) - это определяет ее врямя жизни так сказать
2- в классе объявлено 2 переменных типа врем. таб., - зачем?
3 - в форму не передается никак указатель на врем табл из класса

Надо:
Объявить в классе врем таблицу , используя объявленную в classDeclaration переменную- заполнить ее. Затем с помощю метода класса, передать ее (tmpTable) в форму, и там делать setTmpData.

У вас получается в объявлении одно, заполняется другое и в итоге ничего не передается в форму. Вобщем вот.

ПС: и вообще форма про класс то не знает ничего.

Geändert von Jony (12.02.2007 um 16:29 Uhr)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
Dynamics AX: DAX 4.0 Filter by Grid [Update] Blog bot DAX Blogs 0 27.04.2007 17:10
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
Сохранение настроек GRID (ширина и порядок колонок) liza DAX: Программирование 1 25.07.2003 22:20

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.