закон Мэрфи опять сработал

почему-то если rangeStart - фильтр по одному полю
rangeStart = qbds.addRange(fieldnum(MyTBL, STARTDATE));
rangeStart.value(strfmt('%1..%2',FromDate.valueStr(),ToDate.valueStr()));
то работает и даты как положено воспринимает
SELECT * FROM MyTBL WHERE ... AND ((StartDate>={ts '2011-01-01 00:00:00.000'} AND StartDate<={ts '2011-05-22 00:00:00.000'})) AND .....
а если
str rangeDate = strfmt("(((STARTDATE>=%1) and (STARTDATE<=%2)) or ((ENDDATE>=%1) and (ENDDATE<=%2)))", FromDate.valueStr(), ToDate.valueStr());
rangeDates = qbds.addRange(fieldNum(MyTBL ,RecId));
rangeDates.value(rangeDate); - фильтр по RecID
то даты имеют вид другой
SELECT * FROM MyTBL WHERE ... AND (((((STARTDATE>=01/01/2011) and (STARTDATE<=22/05/2011)) or ((ENDDATE>=01/01/2011) and (ENDDATE<=22/05/2011)))))
ещё ругается что какой-то скобки не хватает.
[Date values should be formatted using Date2StrXpp() ]
пыталась вместо FromDate.valueStr() - date2strxpp(FromDate) ругается
Argument '_date' ia incompatible with required type.