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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.09.2009, 17:34   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Alexanderrrr когда сообщение пишите на панели есть кнопочка Х++.
Код будет смотрется лучше.
Сейчас он выглядит ужасно.
После
X++:
 c++;
добавьте
X++:
        if (c >= 2)
            break;
Зачем мучить аксапту. Ведь вам интересно есть ли строки и что их больше 1.
А две или 10 вам уже без разницы.
Вот так же красивее.
X++:
void clicked()
{
    QueryBuildDatasource    pointTable;
    query q;
    queryBuildRange qbr;
    RContractTable              RContract;
    ObjectTable              object;
    PointAccountTable        pointAccount;
    int c;
;

    for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); 
        RContract;
        RContract = RContractTable_ds.getNext())
    {
        c++;
    }

    qbr=pointTable.findRange(FieldNum(ICLPointAccountTable,PointAccountId));
    if (qbr)
    {
        for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); 
            RContract;
            RContract = RContractTable_ds.getNext())
        {
            object = RContract.joinChild();
            pointAccount = object.joinChild();
            qbr.value(qbr.value()+',!'+pointAccount.PointAccountId);
        }
    }
    else
    {
        if (c==1)
        {
            qbr=pointTable.addRange(FieldNum(ICLPointAccountTable,PointAccountId));
            qbr.value('!'+ICLPointAccountTable.PointAccountId);
        }
        else
        {
            qbr=pointTable.addRange(FieldNum(ICLPointAccountTable,PointAccountId));
            for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); 
                RContract;
                RContract = RContractTable_ds.getNext())
            {
                object = RContract.joinChild();
                pointAccount = object.joinChild();

                qbr.value(qbr.value()+',!'+pointAccount.PointAccountId);
            }
        }
    }
    RContractTable_ds.research();
}
Раньше, когда я только начинал, ведущий у меня не принимал задачу, если отступления были не там где надо или их не было. Придирался к мелочам.
Но я с ним был согласен. Потом, смотреть как выглядит код когда уже всё готово, стало привычкой.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
За это сообщение автора поблагодарили: Alexanderrrr (1).
Старый 02.10.2009, 17:17   #2  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Регистрация: 09.04.2009
небольшой offtop
Цитата:
Сообщение от miklenew Посмотреть сообщение
После
X++:
 c++;
добавьте
X++:
        if (c >= 2)
            break;
Зачем мучить аксапту. Ведь вам интересно есть ли строки и что их больше 1.
А две или 10 вам уже без разницы.
Влезу со своими 5 копейками: в таком случае, чтобы определить помечена 1 или несколько строк в общем то не за чем гонять первый цикл:
X++:
void clicked()
{
    int c;
;
    ...
    for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); 
        RContract;
        RContract = RContractTable_ds.getNext())
    {
        c++;
    }
    ...
}
факт того что помечено несколько (больше 1) строк можно проанализировать через RContractTable_ds.anyMarked().
__________________
Dynamics AX 4.0 SP2
За это сообщение автора поблагодарили: miklenew (3), Alexanderrrr (1).
Старый 02.10.2009, 18:15   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от in.dc Посмотреть сообщение
факт того что помечено несколько (больше 1) строк можно проанализировать через RContractTable_ds.anyMarked()
Правильное уточнение. С наскоку не вспомнил.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 07.10.2009, 19:10   #4  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от in.dc Посмотреть сообщение
факт того что помечено несколько (больше 1) строк можно проанализировать через RContractTable_ds.anyMarked().
Не знаю как в 4ке, а в 3ке функция anyMarked() возвращает true если выделить с Ctrl одну строку, так что будте аккуратны и внимательны)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Теги
grid, позиционирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
Обработка события нажатие клавиши на гриде berlioz DAX: Программирование 17 27.09.2006 09:48
как перечислить все колонки в гриде ? Omeo DAX: Программирование 5 16.06.2004 09:22
Позиционирование при переходе к основной таблице dn DAX: Программирование 2 29.01.2004 18:35
Lookup поля в Гриде NeveB DAX: Программирование 1 10.12.2003 12:18

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

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

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