Показать сообщение отдельно
Старый 28.02.2009, 20:39   #14  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,974 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Джобец
X++:
// GRD_fixQueryValue_pkoz    // pkoz 27.02.2009
static void Job463(Args _args)
{
    int         dd;
//    str         data;// = 27\02\2009;
    date        data = dateNull();
//    date        data = 27\02\2009;
    vendTable   vendTable;
    Query       Query;
    QueryRun    qr;

    str getRange()
    {
        ;
        //return date2strXpp(data);
        return
            strFMT( '((%1==%2))',
                        fieldStr(vendTable, modifiedDate),

                        //QueryValue(data) // с таким параметром кривая дата будет пр использовании расширенных запросов
                        date2strXpp(data) // а при таком все нормально
                        )
        ;
    }
    void qu(boolean _lit, boolean _ext, str _s)
    {
        boolean     good;
        ;
        //info("");
        Query = New Query();
        if (_lit)
            Query.literals(1);

        if (_ext)
            Query.addDataSource(tableNum(vendTable)).addRange(fieldNum(vendTable,
                //modifiedDate
                recId
                )).value(
                getRange()
                );
        else
            Query.addDataSource(tableNum(vendTable)).addRange(fieldNum(vendTable, modifiedDate)).value(QueryValue(data));

        info(Query.dataSourceNo(1).toString());
        qr = New QueryRun(Query);
        good = qr.next();
        info(strFMT("%3 Литералы %1, Расш запрос %2,  recId = %4", _lit, _ext, good ? "Есть результат" : "Нет результата", good ? qr.getNo(1).RecId : 0));
        info("");

        //info("");

    }
    ;
    setPrefix("Оператор SQL");
    info(getRange());

    //GRD_SqlTraceOn();
    //info("");

    qu(0, 0);
    qu(0, 1);
    qu(1, 0);
    qu(1, 1);
    //info("");
    //GRD_SqlTraceOff();

}

Как вы и предполагали, проблема связана с использованием -Internal=NoCursorReuse
Без использования этого ключа логирование может выдавать неверную информацию. modifiedDate - ни при чем

При изменении даты фильтрации
X++:
date        data = dateNull();
- логирование показывает значение которое использовалось в первый раз. Запрос на БД в любом случае правильный уходит.
За это сообщение автора поблагодарили: ZVV (1).