|
17.12.2014, 13:56 | #1 |
Участник
|
AX 2012 R2 Табличный курсор не возвращает все записи удовлетворяющие условиям отбора (ValidTimeState не используется)
Этот скрипт при каждом запуске обрабатывает только часть строк таблицы LogisticsAddressCountryRegion удовлетворяющих условиям отбора (ValidTimeState не используется).
X++: LogisticsAddressCountryRegion addressCountry; Integer counter; while select addressCountry where addressCountry.CountryRegionId != addressCountry.ISOcode { counter++; addressCountry.CountryRegionId = addressCountry.ISOcode; addressCountry.renamePrimaryKey(); } info(int2str(counter)); |
|
17.12.2014, 14:21 | #2 |
Боец
|
Цитата:
Сообщение от Morpheus
Этот скрипт при каждом запуске обрабатывает только часть строк таблицы LogisticsAddressCountryRegion удовлетворяющих условиям отбора (ValidTimeState не используется).
X++: LogisticsAddressCountryRegion addressCountry; Integer counter; while select addressCountry where addressCountry.CountryRegionId != addressCountry.ISOcode { counter++; addressCountry.CountryRegionId = addressCountry.ISOcode; addressCountry.renamePrimaryKey(); } info(int2str(counter)); |
|
17.12.2014, 17:02 | #3 |
Участник
|
|
|
19.12.2014, 15:17 | #4 |
Участник
|
Сначала набор записей для обновления из select положить в RecordSortrdList.
Потом для каждого элемента RecordSortrdList выбирать строку из базы и обновлять. |
|
20.12.2014, 16:46 | #5 |
Участник
|
Вы в одной и той же выборке делаете выбор по ключевому полю и в той же выборке это ключевое поле меняете.
Ни в Аксапте, ни в MS SQL никто не гарантирует, что будет произведена ВСЯ выборка, а потом результаты этой выборки будут выдаваться Вам независимо от того, меняете ли Вы данные - выбор вполне может выдаваться какими-то порциями, причем, если не задать сериализуемую транзакционную выборку, то в рамках одной сессии гарантии постоянства выборки нет. Поэтому нужно сначала сделать выборку, запомнить её результаты, а потом уже менять данные. Как уж Вы будете запоминать эти данные выборки до их изменения уже не важно. Можно как советует Artoodeetoo, можно запоминать ключи в Set, Map, Array т.п. - решайте сами. Последний раз редактировалось Raven Melancholic; 20.12.2014 в 16:50. |
|
20.12.2014, 21:02 | #6 |
северный Будда
|
а не проще ли было бы просто сделать update_recordset для таблицы? кмк и в скорости работы выигрыш, и в надёжности
__________________
С уважением, Вячеслав |
|
|
|