|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от FrolovAndy
![]() Если уж совсем изящно, то лучше так:
X++: static void TstInf(Args _args) { TestInfo testInfo, // для выбора уже имеющихся строк newRecord; // для вставки новых ; ttsbegin; while select testInfo where testInfo.NameID == 1 { newRecord.clear(); newRecord.data(testInfo); newRecord.NameDI = testInfo.NameID + 10; newRecord.insert(); } ttscommit; } |
|
![]() |
#2 |
Участник
|
Цитата:
Например, если на одну имеющуюся запись должно создаваться n новых, внутри while-цикла организуете for-цикл от 1 до n, на каждой итерации которого будет выполняться insert. Программирование - удивительно гибкая вещь, и основная проблема как правило это чёткое понимание того что же мы хотим получить =) |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от FrolovAndy
![]() Так от постановки зависит. Приведенный выше пример создает по одной новой записи на каждую существующую. Если требуется не одну а несколько, надо определиться с критериями задачи, с алгоритмом по которому записи должны создаваться.
Например, если на одну имеющуюся запись должно создаваться n новых, внутри while-цикла организуете for-цикл от 1 до n, на каждой итерации которого будет выполняться insert. Программирование - удивительно гибкая вещь, и основная проблема как правило это чёткое понимание того что же мы хотим получить =) У меня вот так вот получилось X++: ttsbegin; while (i <= 10) { newRecord.clear(); newRecord.data(testInfo); newRecord.NameID = 1; newRecord.insert(); i++; } while select forupdate TestInfo where testInfo.NameID == 1 { testInfo.NameDI=testInfo.NameID + 10; testInfo.update(); } ttscommit; |
|
![]() |
#4 |
Сенбернар
|
OFF :
Набирают программистов.. по объявлению )) NP to anybody involved ))
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: Kabardian (1). |