AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2015, 08:43   #1  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от 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;
}
Использование оператора newRecord.data(testInfo) опционально, всё зависит от того, должны ли в новую запись копироваться значения остальных полей из исходной записи.
А как сделать чтобы он несколько записей добавлял? чёто в в цикл у меня не получается поставить((
Старый 07.04.2015, 09:45   #2  
FrolovAndy is offline
FrolovAndy
Участник
 
71 / 45 (2) +++
Регистрация: 13.09.2007
Цитата:
Сообщение от JonAx Посмотреть сообщение
А как сделать чтобы он несколько записей добавлял? чёто в в цикл у меня не получается поставить((
Так от постановки зависит. Приведенный выше пример создает по одной новой записи на каждую существующую. Если требуется не одну а несколько, надо определиться с критериями задачи, с алгоритмом по которому записи должны создаваться.
Например, если на одну имеющуюся запись должно создаваться n новых, внутри while-цикла организуете for-цикл от 1 до n, на каждой итерации которого будет выполняться insert.

Программирование - удивительно гибкая вещь, и основная проблема как правило это чёткое понимание того что же мы хотим получить =)
Старый 07.04.2015, 11:27   #3  
JonAx is offline
JonAx
Участник
 
67 / 11 (1) +
Регистрация: 25.07.2014
Цитата:
Сообщение от FrolovAndy Посмотреть сообщение
Так от постановки зависит. Приведенный выше пример создает по одной новой записи на каждую существующую. Если требуется не одну а несколько, надо определиться с критериями задачи, с алгоритмом по которому записи должны создаваться.
Например, если на одну имеющуюся запись должно создаваться n новых, внутри while-цикла организуете for-цикл от 1 до n, на каждой итерации которого будет выполняться insert.

Программирование - удивительно гибкая вещь, и основная проблема как правило это чёткое понимание того что же мы хотим получить =)
Я через While сделал, но я не могу понять как остановить цикл((
У меня вот так вот получилось
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;
Старый 07.04.2015, 20:06   #4  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
OFF :

Набирают программистов.. по объявлению ))

NP to anybody involved ))
__________________
Best Regards,
Roman
За это сообщение автора поблагодарили: Kabardian (1).
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:07.