|
14.02.2014, 07:05 | #1 |
Участник
|
Проблема с временной таблице в lookup
Добрый день!
Есть код, который должен при некотором условии выполнять вставку данных в таблицу, которая хранится на сервере, НО которую в коде я делаю временной. После этого, эти данные должны выпадать в lookup'е X++: public void lookup() { TableObj tempTable1, table1; SysTableLookup sysTableLookup; ; //Делаем таблицу временной tempTable1.setTmp(); sysTableLookup = SysTableLookup::newParameters(tablenum(TableObj), this); //Добавляем столбцы sysTableLookup.addLookupfield(fieldnum(TableObj, CustAccount)); sysTableLookup.addLookupfield(fieldnum(TableObj, Name)); sysTableLookup.addLookupfield(fieldnum(TableObj, Desc)); ttsbegin; //перебираем while select * from table1 order by CustAccount desc { if (table1.CustAccount == 'Target') { tempTable1.data(table1); tempTable1.insert(); } } ttscommit; //BP Deviation Documented sysTableLookup.parmTmpBuffer(tempTable1); sysTableLookup.performFormLookup(); } Так вот: проблема в том, что когда данные для выборки и вставки есть - они выводятся спокойно. Но вот когда их нет - выводится полный набор столбцов из таблицы в БД. А должно быть по идее то пусто! В чем причина? как это исправить? MS DAX 2009 |
|
14.02.2014, 07:23 | #2 |
Участник
|
this.text(''); в самом началу лукапа не спасет?
А где у вас передача временной в sysTableLookup? Я бы так делал: X++: this.text(''); tempTable1.setTmp(); ... //заполнение временной sysTableLookup = SysTableLookup::construct(); sysTableLookup.parmCallingControl(this); sysTableLookup.parmTmpBuffer(tempTable1); sysTableLookup.parmTableId(tableNum(TableObj)); sysTableLookup.addLookupfield(fieldNum(TableObj, CustAccount), true); sysTableLookup.performFormLookup(); |
|
14.02.2014, 07:32 | #3 |
Участник
|
|
|
14.02.2014, 08:08 | #4 |
Участник
|
Походу косяк в реализации SysTableLookup
Проверка на временность таблицы там выглядит следующим образом X++: public FormRun formRun() { ... if (tmpBuffer) { formDataSource.init(); //BP deviation documented formDataSource.cursor().setTmp(); // if using non-temp table in tmp mode formDataSource.cursor().setTmpData(tmpBuffer); } ... } Должно заработать, если подкорректировать условие на что-то типа X++: if (tmpBuffer.TableId != TableNum(Common)) Последний раз редактировалось S.Kuskov; 14.02.2014 в 08:11. |
|
|
За это сообщение автора поблагодарили: Oz (1), trud (2), gl00mie (3), Kabardian (4), Vasiliusis (1). |
Теги |
lookup, null, баг, временная таблица |
|
Похожие темы | ||||
Тема | Ответов | |||
Проблема со своим lookup-ом | 9 | |||
Подскажите в чем проблема у Lookup | 2 | |||
Lookup по временной таблице | 9 | |||
Отчет по временной таблице | 1 | |||
Проблема с поиском во временной таблице | 0 |
|