Pues el código parece estar bien (y confío en Rubén Rovira).
Dime de qué tipo es el campo ID en tu tabla con las imagenes, y fíjate de que tipo es el parámetro que estás pasando. Una buena práctica de programación es usar aserciones para los parámetros. Por ejemplo, en este caso:
FUNCTION QueImagen
LPARAMETERS tcIDImagen <<<<<<<---------------------------- 2
Assert VarType( tcIDImagen ) = "C" Message "El ID de imagen debe ser tipo caracter"
Verás que de esta manera, si el parámetro pasado es incorrecto, te aparece un mensaje (siempre que esté corriendo dentro del entorno de desarrollo, no con el runtime), y que SET ASSERTS esté en ON.
El uso generalizado de aserciones hace tu código más autodefensivo y te ahorrará muchas horas de debugging.
Saludos,