Veréis que utilizo esta sintáxis
conexion.exec(subst("select &1 from &2",campo,tabla))
Eso es redundande e innecesario: exec por sí mismo admite los parámetros reemplazables sin problemas... pero no puedes depurar la cadena hasta que se genere el error (o el acierto ). De esta manera, paras el código en la línea y seleccionando la función subst con el cursos puedes ver exactamente lo que envías a la base de datos.
Supongo que en producción debería eliminar el subst y dejarlo todo en manos del exec... pero es que el programa aún no está terminado y esos detalles como que se quedan ahí.