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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2006, 11:17   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Думаю это не глюк - это фича. Попробуйте ввести "од" и у вас отфильтруются записи с элементом "Один". Т.е. ищет по вхождению с начала лейбла

Могу предложить небольшую модификацию формы SysFormSearch, метод GetText() для использования шаблонов в поиске по enum полям
X++:
str 80 getText()
{
    str 80 text = findEdit.text();
    DictField   dictField;
    DictType    dictType;
    DictEnum    dictEnum;
    enumId      enumId;
    int         i;
    str         pattern;
    boolean     found;
    int         scanPos, scanInq, scanAst;
    str 1       scanChar;
    ;
    if (strscan(text, "*", 1, strlen(text)) > 0 || strscan(text, "?", 1, strlen(text)) > 0)
    {
        dictField = new DictField(_dataset, fieldext2id(_field));
        if (dictField && dictField.baseType() == Types::Enum)
        {
            enumId = 0;
            if (dictField.Type() == Types::UserType)
            {
                dictType = new DictType(dictField.typeId());
                if (dictType)
                    enumId = dictType.enumId();
            }
            else
                enumId = dictField.enumId();
            if (enumId)
            {
                dictEnum = new DictEnum(enumId);
                if (dictEnum)
                {
                    pattern = "";
                    i = 1;
                    while (strscan(text, "*", i, strlen(text)) || strscan(text, "?", i, strlen(text)))
                    {
                        scanInq = strscan(text, "?", i, strlen(text));
                        scanAst = strscan(text, "*", i, strlen(text));
                        scanChar = scanInq && (!scanAst || scanInq < scanAst) ? "" : "*";
                        scanPos = scanInq && (!scanAst || scanInq < scanAst) ? scanInq : scanAst;
                        pattern += (substr(text, i, scanPos-i) + "." + scanChar);
                        i = scanPos + 1;
                    }
                    if (i <= strlen(text))
                        pattern += substr(text, i, strlen(text));

                    found = false;
                    for (i=0; i < dictEnum.values(); i++)
                    {
                        if (match(pattern, dictEnum.index2Label(i)))
                        {
                            text = dictEnum.index2Label(i);
                            found = true;
                            break;
                        }
                    }
                    if (!found)
                    {
                        for (i=0; i < dictEnum.values(); i++)
                        {
                            if (match(pattern, dictEnum.index2Symbol(i)))
                            {
                                text = dictEnum.index2Symbol(i);
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    return text;
}
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: wb (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить из элемента enum-а код типа (enum-а)? Romb DAX: База знаний и проекты 12 27.06.2013 16:17
Dianne Siebold: Restart AOS When Service WSDL Contains an Enum Blog bot DAX Blogs 0 16.12.2008 06:09
Выбираем Enum, меняется Lookup, как правильней закодить? Shakr DAX: Программирование 23 21.08.2008 09:04
Глюк компилятора Eldar9x DAX: Программирование 5 21.01.2008 14:03
Глюк автоматическое рассопопоставление Logger DAX: Функционал 4 14.07.2006 10:09

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

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

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