Показать сообщение отдельно
Старый 17.03.2009, 10:25   #23  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Здесь ключевые слова "расширенный фильтр" и "like". Расширенный фильтр like не поддерживает, по крайне мере в 3.0 точно.
У меня 3-ка.

Есть таблица Table1:

Field1 Field2 Field3 Field4
100 Глав_1 П_1 F_1
100 Пред_1 Д_1 S_2
100 Пред П_3 S_3

Код:
X++:
    Query                   q;
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;

    QueryRun                qr;
    Table1               table1;
    ;

    q    = new Query();

    qbds = q.addDataSource(TableNum(Table1));

    qbr = qbds.addRange(fieldNum(Table1, Field2));

    qbr.value(strFmt('( (%1.%2 like "Глав_*") || ((%1.%3 like "П_*") && (%1.%4 like "S_*")))',
    q.dataSourceTable(tableNum(Table1)).name(),
    fieldStr(Table1, Field2),
    fieldStr(Table1, Field3),
    fieldStr(Table1, Field4)));

    info(q.dataSourceNo(1).toString());

    qr = new QueryRun(q);

    while (qr.next())
    {
        table1 = qr.get(TableNum(Table1));

        info(table1.Field2);
    }
Выдает:
Цитата:
Сообщение (12:27:52)
SELECT * FROM Table1 WHERE ((( (Table1_1.Field2 like "Глав_*") || ((Table1_1.Field3 like "П_*") && (Table1_1.Field4 like "S_*")))))

Глав_1

Пред
Именно, что и ожидалось. Что не работает?

Единственное отличие - это поставлены кавычки на каждое значение.
Но без них выдает "Ошбку расширенного диапазона."

Последний раз редактировалось Eldar9x; 17.03.2009 в 10:43.