SQL выражение - это строка. Парсер встречая "str" пытается найти поле с таким именем в таблице. Т.к. его нет, происходит ошибка при проверке выражения.
Код:
sql.Add('select FilmName from table_film where filmname like '+
QuotedStr('%'+ Edit1.Text)+'%'));
// Params[0].AsString:= '%'+ Edit1.Text+'%';
Open;
Добавлено.
Параметры это, конечно, хорошо, но применять их смысла большого нет. Если представить себе приложение где формируется сотня видов SQL выражений, то получается, что на форме надо держать сотню компонентов Query каждый со своими параметрами. Нелепость какая-то. Проще держать пару Query, задавая нужное выражение в каждый момент времени свое, передавая значения параметров непосредственно в текст выражения (как показано здесь в исходнике).