18.05.2010, 17:11 | #1 |
Участник
|
dataSetLookup(), временная таблица и Query
Добрый день
Есть задача переписать лукапе в Гриде на странице Enterprise portal Я добавил метод datasetlookup для нужного поля в DataSource DataSet'a. Проблема в том что в лукапе надо отобразить содержание временной таблицы, а в SysDataSetLookup можно подать только Query. sysDataSetLookup.parmQuery(query); Временная таблица не связана с таблицей в Datasourcе, тоесть в dataSetLookup'e создается новый Query. X++: void dataSetLookup(SysDataSetLookup sysDataSetLookup) { List list; Query query = new Query(); ; // //qyery.addDataSource(ClassName.getTmpTable().TableId); list = new List(Types::String); list.addEnd(fieldstr(ProjTable, ProjId)); list.addEnd(fieldstr(ProjTable, Name)); list.addEnd(fieldstr(ProjTable, Status)); sysDataSetLookup.parmLookupFields(list); sysDataSetLookup.parmSelectField('ProjId'); sysDataSetLookup.parmQuery(query); } Solutions Monkey: EP Tips-n-Tricks - Data Sets / Data Sources К сожалению не нашел ничего похожего как SysTablelookup.parmTmpBuffer() в SysDataSetlookup. как вообще можно реализовать идею, использования временной таблицы в лукапе датасета. |
|
18.05.2010, 18:35 | #2 |
Участник
|
Надо в качестве параметра передать еще саму временную таблицу (ее содержимое). Должен быть метод вроде
X++: sysDataSetLookup.parmQuery(query); sysDataSetLookup.parmTmpBuffer(MyTmpTableBuffer); Упс.. Не заметил, что уже искали и не нашли Последний раз редактировалось Владимир Максимов; 18.05.2010 в 18:37. |
|
18.05.2010, 21:56 | #3 |
Участник
|
A parmQueryRun() тоже нету? А то можно было бы связать временную таблицу с QueryRun при помощи queryRun.setCursor() или queryRun.setRecord()
|
|
19.05.2010, 00:22 | #4 |
Участник
|
Цитата:
Вобщем сделал немного по другому, так как подаваемая временная таблица, была основана на обычной, то есть было table.setTmp(). И в этой временной таблице были отфильтрованные записи из обычной, я добавил к Query в dataSetlookup методе range с ИЛИ значениями, для каждой отфильтрованной строки, по одному уникальному полю. X++: queryString = '('; qbr = SysQuery::findOrCreateRange(query.dataSourceNo(1), fieldnum(Table, Field)); le = queryRangeList.getEnumerator(); while (le.moveNext()) { queryString += strfmt('(%1 = "%2")', fieldstr(Table, Field), le.current()); if(counter != queryRangeList.elements()) queryString += '||'; counter++; } queryString = queryString + ')'; qbr.value(strfmt(queryString)); Последний раз редактировалось rDenis2; 19.05.2010 в 00:25. |
|
Теги |
lookup, query, временная таблица |
|
Похожие темы | ||||
Тема | Ответов | |||
Временная таблица | 21 | |||
производительность: map или временная таблица | 5 | |||
Временная таблица + RLS | 6 | |||
select sum(amount) from временная таблица | 6 | |||
next и временная таблица | 3 |
|