Как сравнить два поля в 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))));