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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.02.2007, 16:27   #21  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Так неправильно делать
X++:
ERG_TableChangeStorage_ds.cursor().setTmpData(ERG_TableChangeStorage);
Вы пытаетесь данные из временной таблицы вставить в нее же
Вот пример, как можно заполнить временную таблицу на форме.
X++:
public void init()
{
    ERG_TableChangeStorage tmp;
    inventtable it;
    ;
    super();

    select it;
    tmp.ItemId = it.ItemId;
    tmp.ItemName = it.ItemName;
    tmp.Insert();

    next it;
    tmp.ItemId = it.ItemId;
    tmp.ItemName = it.ItemName;
    tmp.Insert();

      ERG_TableChangeStorage_ds.cursor().setTmpData(tmp);
}
Т.е. заполняем табличную переменную и данные из нее уже передаем в табличную переменную на форме.
__________________
Axapta v.3.0 sp5 kr2
Старый 12.02.2007, 16:30   #22  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от AndyD Посмотреть сообщение
Так неправильно делать

X++:
</p><p>ERG_TableChangeStorage_ds.cursor().setTmpData(ERG_TableChangeStorage);



Вы пытаетесь данные из временной таблицы вставить в нее же
Вот пример, как можно заполнить временную таблицу на форме.


Т.е. заполняем табличную переменную и данные из нее уже передаем в табличную переменную на форме.
Мне нужно заполнять вр.таблицу в классе, т.к. в классе происходит импорт из файла, и эти данные должны сохранится для дальнейшей обработке.
Так что заполнение на форме вр. таблицы, конечно вариант, но не для меня
Старый 12.02.2007, 16:33   #23  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
Должно быть примерно так:
1 - В классе объявили tmpTable
2 - в методе класса createLines - используете переменную tmpTable для заполнения временной таблицы.
3 - создаете в классе метод, который вернет tmpTable(назовем parmTmpTable)
3.5 в classDeclaration формы объявим переменную Erg_changeStorage caller;
3.6 в методе init формы : caller = this.args().caller();
4 - в форме после init датасорса делаем ERG_TableChangeStorage.setTmpData(caller.parmTmpTable());

примерно так... конечно надо проверку на caller влепить и пр мелочи но идея такая
Старый 12.02.2007, 16:36   #24  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от fialka Посмотреть сообщение
Мне нужно заполнять вр.таблицу в классе, т.к. в классе происходит импорт из файла, и эти данные должны сохранится для дальнейшей обработке.
Так что заполнение на форме вр. таблицы, конечно вариант, но не для меня
Прислушайтесь к AndyD и Jony, они обозначили проблему :
нет связи между
1. временной таблицей заполненной классом
2. временной таблицей на форме
Старый 12.02.2007, 16:39   #25  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Прислушайтесь к AndyD и Jony, они обозначили проблему :
нет связи между
1. временной таблицей заполненной классом
2. временной таблицей на форме
по данному вопросу, больше подходят советы Джони, вот пытаюсь доделать.. Посмотрим, что получится у меня ))
Старый 12.02.2007, 17:04   #26  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Jony Посмотреть сообщение
Должно быть примерно так:
1 - В классе объявили tmpTable
2 - в методе класса createLines - используете переменную tmpTable для заполнения временной таблицы.
3 - создаете в классе метод, который вернет tmpTable(назовем parmTmpTable)
3.5 в classDeclaration формы объявим переменную Erg_changeStorage caller;
3.6 в методе init формы : caller = this.args().caller();
4 - в форме после init датасорса делаем ERG_TableChangeStorage.setTmpData(caller.parmTmpTable());

примерно так... конечно надо проверку на caller влепить и пр мелочи но идея такая
А какие ещё мелочи? просто я уже прошла по всем пунктам. Форма открывается, класс запускается, но всё равно пусто ( Ну получилось примерно так, где ещё нужно "полечить" кроме моей головы
Вложения
Тип файла: zip test_1.zip (8.6 Кб, 51 просмотров)
Старый 12.02.2007, 17:23   #27  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
на форме:
в мектоде Инит формы:
public void init()
{
caller = new Erg_changeStorage();// удалите строку эту

super();
caller = this.args().caller();//строку поставте перед супер (на сколько помню - super формы вызывает super ДСов => а к этому времени caller у вас еще ни на что не указывает (т.е. без строки caller = new Erg_changeStorage() у вас форма по идее не должна открываться
}

на ДС формы: (сорри - поправил - смотрел еще в старый проект)
так, торопился,сейчас все переписал :
метод ДС
public void init()
{
super();
// ERG_TableChangeStorage.setTmpData(caller.parmTmpTable(TmpTable)); // не так!
ERG_TableChangeStorage.setTmpData(caller.parmTmpTable()); // вот так надо


}
public void executeQuery()
{
;
ERG_TableChangeStorage_DS.setRecord(ERG_TableChangeStorage); // эта строка тут ненужна, удалите ее (вобщем и весь метод можно удалить)

super();
}

Последний раз редактировалось Jony; 12.02.2007 в 17:31.
Старый 12.02.2007, 17:38   #28  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Jony Посмотреть сообщение
на форме:

на ДС формы: (сорри - поправил - смотрел еще в старый проект)
так, торопился,сейчас все переписал :
метод ДС
public void init()
{
super();
// ERG_TableChangeStorage.setTmpData(caller.parmTmpTable(TmpTable)); // не так!
ERG_TableChangeStorage.setTmpData(caller.parmTmpTable()); // вот так надо


}

}
А почему parmTmpTable() , а не parmTmpTable(TmpTable)); ? будет же ошибка, что неправильное кол-во аргументов...

Последний раз редактировалось fialka; 12.02.2007 в 17:39. Причина: не полное сообщение
Старый 12.02.2007, 17:45   #29  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от fialka Посмотреть сообщение
А почему parmTmpTable() , а не parmTmpTable(TmpTable)); ? будет же ошибка, что неправильное кол-во аргументов...
мы же хотим считать значение, а не установить.

а ошибки не будет, потому что метод parm... имеет спец. структуру.
X++:
TmpTable parmTmpTable(TmpTable _tmpTable = existingTmpTable)
{
    existingTmpTable = _tmpTable;
    return existingTmpTable;
}
Старый 12.02.2007, 17:48   #30  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
дада, метод не должен принимать параметров вообще, пуксь будет не парм а вообще свойство....getTmpTable()
TmpTable getTmpTable()
{
return existingTmpTable;
}

....типа такого
Старый 12.02.2007, 17:50   #31  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от fialka Посмотреть сообщение
А почему parmTmpTable() , а не parmTmpTable(TmpTable)); ? будет же ошибка, что неправильное кол-во аргументов...
Цитата:
parm<same name as member variable>Runbase way
Special methods used for setting and getting the value of a member variable as a part of an object initialization should be given the same name as the set member variable, prefixed parm, see static new...
This method name can change the method.
Так вот в Вашем случае parm метод работает с целью получить (Get) объект, а не установить (Set) его значение. Объект в данном случае временная таблица.

Пример parm метода:
X++:
public InventJournalTable parmInventJournalTable(InventJournalTable _inventJournalTable = inventJournalTable)
{
    ;
    inventJournalTable = _inventJournalTable;
    return inventJournalTable;
}
Старый 12.02.2007, 17:52   #32  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
Цитата:
Сообщение от fialka Посмотреть сообщение
А почему parmTmpTable() , а не parmTmpTable(TmpTable)); ? будет же ошибка, что неправильное кол-во аргументов...

по смыслу: нам надо получить указатель(курсор) временной таблицы, т.е. то что нам сделал класс. а у Вас получается, что из формы передаем в класс пустой указатель и им(пустым) затераем то, что в классе, ну и соответственно ворачивает в форму только что переданый из нее же пустой курсор.
Старый 12.02.2007, 17:58   #33  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
мы же хотим считать значение, а не установить.

а ошибки не будет, потому что метод parm... имеет спец. структуру.

X++:
</p><p>TmpTable parmTmpTable(TmpTable _tmpTable = existingTmpTable)</p><p>{</p><p> existingTmpTable = _tmpTable;</p><p> return existingTmpTable;</p><p>}</p><p>

неа, не съел... на синтаксич. ошибку ругается, а я по- моему совсем запуталась
Старый 12.02.2007, 18:02   #34  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
Измениете метод
public ERG_TableChangeStorage parmTmpTable(ERG_TableChangeStorage _TmpTable)
{
TmpTable = _TmpTable;
return TmpTable;
}

на
public ERG_TableChangeStorage parmTmpTable()
{
return TmpTable;
}
и тада все съест
Старый 12.02.2007, 18:04   #35  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Jony Посмотреть сообщение
Измениете метод
public ERG_TableChangeStorage parmTmpTable(ERG_TableChangeStorage _TmpTable)
{
TmpTable = _TmpTable;
return TmpTable;
}

на
public ERG_TableChangeStorage parmTmpTable()
{
return TmpTable;
}
и тада все съест
Есть контакт )) спасибочки , что всё разжували.... пойду домой переваривать))
Старый 13.02.2007, 12:35   #36  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Jony и Kashperuk .. моё вам уважение.. Спасибо большое... Вы молодчины... Всё разжевали так, что даже до меня дошло и всё доделала... Ещё раз спасибо.
Старый 13.02.2007, 13:15   #37  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот, кстати, картинка в тему - разъясняет, что мы тут проделали при использовании методa setTmpData()
Проблема с очисткой временной таблицы
Старый 13.02.2007, 13:29   #38  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вот, кстати, картинка в тему - разъясняет, что мы тут проделали при использовании методa setTmpData()
Проблема с очисткой временной таблицы
Распечатала . повесила рядом с фото любимлй дочери, чтобы потом не запамятовать))
Старый 18.06.2007, 23:07   #39  
akvi is offline
akvi
Участник
 
119 / 12 (1) ++
Регистрация: 31.03.2003
Адрес: Москва
А если нужен Grid без источника данных? Требуется просто "нарисовать" табличку и заполнить несколько строк, не привязываясь к таблице. Такое, вообще, возможно?
Старый 19.06.2007, 00:06   #40  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Цитата:
Сообщение от akvi
А если нужен Grid без источника данных? Требуется просто "нарисовать" табличку и заполнить несколько строк, не привязываясь к таблице. Такое, вообще, возможно?
Аха, смотри форму tutorial_Form_Table
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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

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

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

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