2017-02-08 26 views
1

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

Мой код looklike это:

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)))); 

На Debug Я вижу Thie значение запроса:

SELECT * FROM VendTable (VendTable_1) где ((РОЖДЕНИЯ = {ц «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

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

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)))); 
+0

Спасибо всем, хорошо работайте. – ulisses