Que tal. Tuve el mismo problema y comencé a buscar por todos lados que es lo que sucedía. Al fin di con la solución y se las comparto, porque gracias a lo que estuve leyendo aquí y en otros lados, me di cuenta de lo que pasaba,¡ y es algo muy sencillo! Por lo menos en mi caso lo fue. Espero que les ayude en algo.
En mi caso personal, yo utilizaba imágenes en vez de botones para todo, y para imprimir también. Ademas, tenia un grid habilitado donde se muestra el detalle. Sucede que revisando las propiedades de las imagenes, estas no tienen ninguna opción SETFOCUS, GOTFOCUS, por lo cual solo ejecutan el comando que le pongamos en la propiedad CLICK, pero inmediatamente el programa busca un control activado para obtener el foco. Sucede que en mi programa, al momento de enviar una impresión, todos los controles, incluso cuadros de texto estaban deshabilitados, lo único habilitado eran las imágenes de impresión y el grid, entonces el reporte , al primer click, te muestra el cursor que acabas de crear en la consulta, pero al momento de darle al botón CLICK o VISTA PREVIA, el formulario obtenía el foco y lo llevaba al grid. El grid también esta formado de un cursor, pero diferente a lo que estoy imprimiendo, es en ese momento en que el reporte pierde el cursor que lo conforma y toma el cursor del grid, por lo cual, si hay campos con nombres que no existen en el grid, te tira un error de que "La variable X no existe". Mi solución fue quitar las imágenes y cambiarlo por botones. Los botones si obtienen el foco y como no cargan otro cursor al hacerlo, me mantiene el reporte sin problemas cuando lo quiero imprimir.
En tu caso debe ser algo similar, el programa esta regresando el foco a algún control con una tabla asociada, luego entonces, el cursor cambia y el reporte pierde el cursor que originalmente lo conformó. Asegúrate que al crear el reporte el foco lo tenga un control que no tenga tablas o cursores asociados.
Espero les ayude en algo. Saludos!!!