Как сравнить два поля в QueryBuilder?

Я использую QueryBuilder. Я хочу выделить всю запись в VendTable, имеющую два равных поля.

Мой код выглядит так:

QueryBuildDataSource qbds;
QueryRun        queryRun;

qbds= queryRun.query().dataSourceTable(tableNum(VendTable));
qbds.addRange(fieldNum(VendTable, BirthDate))
.value(strFmt('%1 == %2',strFmt("%1.%2",qbds.name(), fieldStr(VendTable,BirthDate)) ,strFmt("%1.%2", qbds.name(),fieldStr(VendTable,FieldTransDate))));

При отладке я вижу значение запроса:

SELECT * FROM VendTable (VendTable_1) WHERE ((Дата рождения = {ts '1900-01-01 00:00:00.000'}))

Но не работает, я хотел бы создать этот запрос:

select vendTable
 where vendTable.BirthDate== vendTable.FieldTransDate;

SELECT * FROM VendTable (VendTable_1) WHERE ((BirthDate = FieldTransDate))

Я хочу сравнить поля в той же таблице BirthDate == FieldTransDate

Как я могу сделать запрос, показанный выше QueryBuilder?

Спасибо, наслаждайтесь!

1 ответ

Решение

Вы не используете правильный синтаксис для выражения запроса. Помните скобки:

qbds.addRange(fieldNum(VendTable, BirthDate))
    .value(strFmt('(%1 == %2)',
                  strFmt("%1.%2", qbds.name(), fieldStr(VendTable, BirthDate)),
                  strFmt("%1.%2", qbds.name(), fieldStr(VendTable, TransDate))));
Другие вопросы по тегам