¿Cómo utilizar los parámetros de consulta de ADO para especificar nombres de tablas y campos?

Estoy ejecutando unUPDATE declaración en unTADOQuery y estoy usando parámetros para algunas cosas. Inicialmente, esto funcionaba bien, pero agregué otro parámetro para el nombre de la tabla y el nombre del campo, y ahora se está rompiendo.

El código se ve así:

Q.SQL.Text:= 'update :tablename set :fieldname = :newid where :fieldname = :oldid';
Q.Parameters.ParamValues['tablename']:= TableName;
Q.Parameters.ParamValues['fieldname']:= FieldName;
Q.Parameters.ParamValues['oldid']:= OldID;
Q.Parameters.ParamValues['newid']:= NewID;

Y el error que recibo:

Supongo que esto es porque estoy usando este nombre de campo dos veces. Puedo superar esto usando otro nombre de campo único por segunda vez que se usa, sin embargo, todavía tengo otro error:

¿Cómo uso los parámetros para especificar la tabla y el campo a actualizar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta