Может быть здесь ответ (из справки по ADO):
"Note: ParamByName operates with the name of a parameter as it appears in an SQL statement or stored procedure, not the Name property of a TParameter object. The two ways of referring to a parameter should not be confused."
Смысл в том, что имя, по которому происходит поиск (ParamByName) не имя самого параметра, а то имя параметра, которое записано в SQL выражении. Хотя они могут и совпадать, конечно. Может на поиск параметра влияет и регистрозависимость имени.
Еще. Вот здесь обсуждение похожей проблемы
http://www.delphikingdom.com/asp/ans...IDAnswer=60935