Сёна, извини ещё раз - это я наступил на грабли, про которые несколько раз читал в форуме. Действительно, второй параметр в ф-ции convert должен быть обрамлён апострофами. Можно взять твой предпоследний вариант и изменить так:
Код:
var dt, dt0: String;
...
dt:= QuotedStr(<формула как ты раньше получала dt>);
dt0:= QuotedStr(<формула как ты раньше получала dt0>);
...
live.Close;
live.SQL.Clear;
live.SQL.Text:='select l.rowid,l.ROL_PASP_ID,l.DATE_B,l.DATE_E,l.MNLZ,l.RU,l.RAD_ID,l.PRICH,l.COL_PL'+
' from my_live_rol l'+
' where (l.ROL_PASP_ID='+floattostr(rolk[i])+')and(l.DATE_E is null)and(l.DATE_B between convert(datetime,'+dt+',104) and convert(datetime,'+dt0+',104))';
live.Open;