Показать сообщение отдельно
Старый 10.08.2013, 23:57   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от kit22 Посмотреть сообщение
Добрый! Дело в том, что у меня в этом поле может храниться много query.pack(). Заполнение поля идет следующим образом

X++:
 this.containerField += query.pack()
То есть мне надо узнать, есть ли в этом поле уже данный запрос, а в поле, например, хранится уже 4 query.pack() и пришел новый query.pack(). И мне не надо записывать query.pack() в это поле, если он уже есть там.
Для проверки данного запроса на наличие в поле таблицы придумал вот такой способ:
X++:
static void EqualQueries(Args _args)
{
    // Таблица, содержащая контейнер запроса AssetTable
    QueryTable  myQueryTable;
    container   containerField;

    // AssetTable - Эквивалентны
    container   packedQuery = new Query(querystr(AssetTable)).pack();

    // AxdAddress - неэквивалентны
    // container   packedQuery = new Query(querystr(AxdAddress)).pack();
    ;

    // Наполнил исходными данными
    /*
    containerField += (new Query(querystr(AssetTable))      .pack());
    containerField += (new Query(querystr(AssetBudgetModel)).pack());
    containerField += (new Query(querystr(AssetProposal))   .pack());
    containerField += (new Query(querystr(AxdExpense))      .pack());

    myQueryTable.QueryCon = containerField;
    myQueryTable.write();
    */

    select firstonly myQueryTable;
    containerField = myQueryTable.QueryCon;

    // Сравниваю
    while (conlen(containerField))
    {
        if (new Query(containerField).pack() == packedQuery)
        {
            info("Equal");
        }

        containerField = condel(containerField, 1, 1);
    }
}

Последний раз редактировалось Cardagant; 11.08.2013 в 00:39.
За это сообщение автора поблагодарили: kit22 (1).