Показать сообщение отдельно
Старый 25.08.2010, 14:26   #1  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Выборка не пустых строковых значений в AX 3.0
Вероятно баян, но в поиске не нашел.
Столкнулся со странным поведением, когда при выборке из таблицы по условию table.field (но не по условию table.field != "")
не выбираются значения, начинающиеся со знака "минус" (-). Тут проще показать, чем рассказать )):

X++:
    TestTable           testTable;
    RecordInsertList    ril;
;
    ttsbegin;
    delete_from testTable;

    ril = new RecordInsertList(tableNum(TestTable));

    testTable.stringField = "1";
    ril.add(testTable);

    testTable.stringField = "-1";
    ril.add(testTable);

    testTable.stringField = "(3%*3%)";
    ril.add(testTable);

    testTable.stringField = "-(3%*3%)";
    ril.add(testTable);

    testTable.stringField = "bla-bla";
    ril.add(testTable);

    testTable.stringField = "-bla-bla";
    ril.add(testTable);

    ril.insertDatabase();

    ttscommit;

    setPrefix("Result");
    while select testTable
        where testTable.stringField
    {
        info("First\t" + testTable.stringField);
    }

    while select testTable
        where testTable.stringField != ""
    {
        info("Second\t" + testTable.stringField);
    }
Так вот, результат сего следующий:

Код:
Result
    First
	1
	(3%*3%)
	bla-bla
    Second
	1
	-1
	(3%*3%)
	-(3%*3%)
	bla-bla
	-bla-bla
Axapta 3.0 SP3 без KR.
В AX2009 такое не повторяется.