|
![]() |
#1 |
Участник
|
Цитата:
Более того, для строковых вообще невозможна прямая арифметика, +'10' даст соединение двух строк, но никак не сложение. Вообще, очень рекомендую эту книжку: http://progbook.ru/x-axapta/589-erem...ii-axapta.html Большинство с неё начинали, она хоть и по AX3, но все базовые принципы X++ там изложены лучше некуда! ![]() |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от FrolovAndy
![]() Да, для int типов надо +10, а не +'10'
Более того, для строковых вообще невозможна прямая арифметика, +'10' даст соединение двух строк, но никак не сложение. Вообще, очень рекомендую эту книжку: http://progbook.ru/x-axapta/589-erem...ii-axapta.html Большинство с неё начинали, она хоть и по AX3, но все базовые принципы X++ там изложены лучше некуда! ![]() X++: static void TstInf(Args _args) { TestInfo testInfo; ; ttsbegin; while select forupdate TestInfo where testInfo.NameID = "1" { testInfo.NameDI=testInfo.NameID + 10; testInfo.update(); } ttscommit; } |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от JonAx
![]() Можно еще один вопрос, как можно добавить данные через insert,чтобы в NameID я программно добавил данные а то я что то не могу понять, постоянно ошибка выходит, я вот так вот сделал))
X++: static void TstInf(Args _args) { TestInfo testInfo; ; ttsbegin; while select forupdate TestInfo where testInfo.NameID = "1" { testInfo.NameDI=testInfo.NameID + 10; testInfo.update(); } ttscommit; } X++: // where testInfo.NameID = "1" where testInfo.NameID == 1 2. Опять же, если int, то не == "1", а правильно будет == 1 Только вы про insert упомянули, так вам надо новые записи добавить, или изменить существующие? |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от FrolovAndy
![]() В условии "where" должно быть по-другому:
X++: // where testInfo.NameID = "1" where testInfo.NameID == 1 2. Опять же, если int, то не == "1", а правильно будет == 1 Только вы про insert упомянули, так вам надо новые записи добавить, или изменить существующие? |
|
![]() |
#5 |
Участник
|
Если уж совсем изящно, то лучше так: 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; } |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от 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; } |
|
![]() |
#7 |
Участник
|
Цитата:
Например, если на одну имеющуюся запись должно создаваться n новых, внутри while-цикла организуете for-цикл от 1 до n, на каждой итерации которого будет выполняться insert. Программирование - удивительно гибкая вещь, и основная проблема как правило это чёткое понимание того что же мы хотим получить =) |
|