![]() |
#9 |
Участник
|
Цитата:
![]() Теперь о самом параметре в контексте самого класса RecordInsertList. Вот данный кусок, где, видимо, данные будут вставлены во временный буфер. X++: recordInsertList = new RecordInsertList(tableNum(LedgerBalanceSheetUsedDimensionsTmp), false, false, false, false, false, _usedTmp); queryRun = new QueryRun(query); while (queryRun.next()) { _usedTmp.clear(); for (i = 1; i <= usedDimensions.lastIndex(); i++) { dimensionAttributeLevelValueAllView = queryRun.get(tableNum(DimensionAttributeLevelValueAllView), i); _usedTmp.EntityValue[i] = dimensionAttributeLevelValueAllView.DisplayValue; _usedTmp.EntityInstance[i] = dimensionAttributeLevelValueAllView.EntityInstance; } recordInsertList.add(_usedTmp); } recordInsertList.insertDatabase(); Код: The array insert operation automatically falls back to classic record-by-record inserts when non-SQL based tables are used (for example, temporary tables)... RecordInsertList X++: private void runRIL() //RIL, temporary buffer contains two records { uapTestTable t; uapTestTable t2; RecordInsertList ril; t.setTmp(); ril = new RecordInsertList(t.TableId, true, true, true, false, false, t); ttsBegin; t.code = "001"; t.value = 1; ril.add(t); t.code = "002"; t.value = 10; ril.add(t); ril.insertDatabase(); ttsCommit; info('temporary uapTestTable'); while select t { info(strFmt("%1 %2", t.code, t.value)); } info('normal uapTestTable'); while select t2 { info(strFmt("%1 %2", t2.code, t2.value)); } /* Info Message (01:40:51 pm) temporary uapTestTable Info Message (01:40:51 pm) 001 1 Info Message (01:40:51 pm) 002 10 Info Message (01:40:51 pm) normal uapTestTable */ } X++: private void runRSL() { uapTestTable t; uapTestTable t2; RecordSortedList rsl; t.setTmp(); rsl = new RecordSortedList(t.TableId, t); rsl.sortOrder(fieldNum(uapTestTable, Code)); ttsBegin; t.code = "001"; t.value = 1; rsl.ins(t); t.code = "002"; t.value = 10; rsl.ins(t); rsl.insertDatabase(); ttsCommit; info('RecordSortedList temporary buffer contains no records, but two inserted in uapTestTable table'); info('temporary uapTestTable'); while select t { info(strFmt("%1 %2", t.code, t.value)); } info('normal uapTestTable'); while select t2 { info(strFmt("%1 %2", t2.code, t2.value)); } /* Info Message (01:42:07 pm) RecordSortedList temporary buffer contains no records, but two inserted in uapTestTable table Info Message (01:42:07 pm) temporary uapTestTable Info Message (01:42:07 pm) normal uapTestTable Info Message (01:42:07 pm) 001 1 Info Message (01:42:07 pm) 002 10 */ } Какие будут соображения?
__________________
Felix nihil admirari |
|
Теги |
ax2012, recordinsertlist, tempdb |
|
|