09.07.2008, 19:18 | #1 |
Участник
|
RecId как поле для Range
коллеги, чем грозит использование поля RecId для задания Range при выборках?
в своей задаче я использовал его для обработке в вызываемом классе по кнопке на форме, где выбраны несколько строк в таблице.
__________________
Felix nihil admirari |
|
09.07.2008, 19:35 | #2 |
Боец
|
Для моментального исполнения в принципе ничем, но лучше использовать стандартный подход. Для этого вам не придется воротить огород:
X++: for (pojectTable = pojectTable_ds.getFirst(true) ? pojectTable_ds.getFirst(true) : pojectTable_ds.cursor(); pojectTable ; pojectTable = pojectTable_ds.getNext()) { this.doSmth(pojectTable); } Edit: Цитата:
коллеги, чем грозит использование поля RecId для задания Range при выборках?
Последний раз редактировалось DSPIC; 09.07.2008 в 19:38. |
|
09.07.2008, 19:45 | #3 |
Участник
|
Цитата:
про огород не понял. я вот как сделал: X++: mQueryRun = new QueryRun(querystr(LBALabelInventTrans)); qbdsITrans = mQueryRun.query().dataSourceTable(tablenum(LBALabelView)); formDatasource = mtblInventTrans.datasource(); for(localInventTrans = formDatasource.getFirst(true) ? formDatasource.getFirst(true) : mtblInventTrans; localInventTrans; localInventTrans = formDatasource.getnext()) { strInventTransIdRange = LBAUtils::queryStrRangeConcat(strInventTransIdRange, localInventTrans.RecId); } qbdsITrans.rangefield(fieldnum(InventTrans, RecId)).value(strInventTransIdRange);
__________________
Felix nihil admirari |
|
10.07.2008, 08:59 | #4 |
Участник
|
Проблемы могут быть с производительностью. Если на вашей таблице нет индекса по RecId, то такой запрос может выполняться достаточно долго. Для решения этой проблемы можно добавить индекс по RecId (свойство CreateRecIdIndex), либо использовать вместо RecId другое поле, по которому в таблице есть уникальный индекс.
|
|
|
За это сообщение автора поблагодарили: aidsua (1). |
|
|