12.02.2007, 16:27 | #21 |
Участник
|
Так неправильно делать
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 |
Участник
|
Цитата:
Сообщение от AndyD
Так неправильно делать
X++: </p><p>ERG_TableChangeStorage_ds.cursor().setTmpData(ERG_TableChangeStorage); Вы пытаетесь данные из временной таблицы вставить в нее же Вот пример, как можно заполнить временную таблицу на форме. Т.е. заполняем табличную переменную и данные из нее уже передаем в табличную переменную на форме. Так что заполнение на форме вр. таблицы, конечно вариант, но не для меня |
|
12.02.2007, 16:33 | #23 |
Участник
|
Должно быть примерно так:
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 |
Moderator
|
Цитата:
нет связи между 1. временной таблицей заполненной классом 2. временной таблицей на форме |
|
12.02.2007, 16:39 | #25 |
Участник
|
|
|
12.02.2007, 17:04 | #26 |
Участник
|
Цитата:
Сообщение от 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 влепить и пр мелочи но идея такая |
|
12.02.2007, 17:23 | #27 |
Участник
|
на форме:
в мектоде Инит формы: 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 |
Участник
|
Цитата:
Сообщение от Jony
на форме:
на ДС формы: (сорри - поправил - смотрел еще в старый проект) так, торопился,сейчас все переписал : метод ДС public void init() { super(); // ERG_TableChangeStorage.setTmpData(caller.parmTmpTable(TmpTable)); // не так! ERG_TableChangeStorage.setTmpData(caller.parmTmpTable()); // вот так надо } } Последний раз редактировалось fialka; 12.02.2007 в 17:39. Причина: не полное сообщение |
|
12.02.2007, 17:45 | #29 |
Участник
|
Цитата:
а ошибки не будет, потому что метод parm... имеет спец. структуру. X++: TmpTable parmTmpTable(TmpTable _tmpTable = existingTmpTable)
{
existingTmpTable = _tmpTable;
return existingTmpTable;
} |
|
12.02.2007, 17:48 | #30 |
Участник
|
дада, метод не должен принимать параметров вообще, пуксь будет не парм а вообще свойство....getTmpTable()
TmpTable getTmpTable() { return existingTmpTable; } ....типа такого |
|
12.02.2007, 17:50 | #31 |
Moderator
|
Цитата:
Цитата:
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 метода: X++: public InventJournalTable parmInventJournalTable(InventJournalTable _inventJournalTable = inventJournalTable) { ; inventJournalTable = _inventJournalTable; return inventJournalTable; } |
|
12.02.2007, 17:52 | #32 |
Участник
|
Цитата:
по смыслу: нам надо получить указатель(курсор) временной таблицы, т.е. то что нам сделал класс. а у Вас получается, что из формы передаем в класс пустой указатель и им(пустым) затераем то, что в классе, ну и соответственно ворачивает в форму только что переданый из нее же пустой курсор. |
|
12.02.2007, 17:58 | #33 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
Измениете метод
public ERG_TableChangeStorage parmTmpTable(ERG_TableChangeStorage _TmpTable) { TmpTable = _TmpTable; return TmpTable; } на public ERG_TableChangeStorage parmTmpTable() { return TmpTable; } и тада все съест |
|
12.02.2007, 18:04 | #35 |
Участник
|
Есть контакт )) спасибочки , что всё разжували.... пойду домой переваривать))
|
|
13.02.2007, 12:35 | #36 |
Участник
|
Jony и Kashperuk .. моё вам уважение.. Спасибо большое... Вы молодчины... Всё разжевали так, что даже до меня дошло и всё доделала... Ещё раз спасибо.
|
|
13.02.2007, 13:15 | #37 |
Участник
|
Вот, кстати, картинка в тему - разъясняет, что мы тут проделали при использовании методa setTmpData()
Проблема с очисткой временной таблицы |
|
13.02.2007, 13:29 | #38 |
Участник
|
Цитата:
Сообщение от kashperuk
Вот, кстати, картинка в тему - разъясняет, что мы тут проделали при использовании методa setTmpData()
Проблема с очисткой временной таблицы |
|
18.06.2007, 23:07 | #39 |
Участник
|
А если нужен Grid без источника данных? Требуется просто "нарисовать" табличку и заполнить несколько строк, не привязываясь к таблице. Такое, вообще, возможно?
|
|
19.06.2007, 00:06 | #40 |
Участник
|
Цитата:
Сообщение от akvi
А если нужен Grid без источника данных? Требуется просто "нарисовать" табличку и заполнить несколько строк, не привязываясь к таблице. Такое, вообще, возможно?
|
|