La función Suma apunta al control que queramos sumar. Parece que el problema podría estar en que el nombre de los controles no es siempre el mismo.
Si es ese el problema, yo lo atacaría a partir de la SQL base del informe.
Imaginemos esta SQL: SELECT UnCampo FROM UnaTabla. Tienes un control en el informe cuyo origen del control es: UnCampo. Si el usuario decide (se supone que le das los mecanismos adecuados para hacerlo) que, en lugar de ver UnCampo, quiere ver OtroCampo. La SQL cambiaria a SELECT OtroCampo FROM UnaTabla. De alguna forma (ocultando, creando o renombrando) tu haces que el control del informe dónde se muestre esa información cambie su nombre a OtroCampo... con lo que la suma deja de funcionarte. (No se si imagino demasiado o no, pero ya que estamos seguiré)
Una solución pasaría por ponerle un Alias al campo que se quiere ver:
SELECT UnCampo As CampoParaVer FROM UnaTabla
El control tiene como origen del control CampoParaVer. Si el usuario decide ver OtroCampo, la SQL cambiaría a:
SELECT OtroCampo As CampoParaVer FROM UnaTabla
Y puesto que el alias es el mismo, el control muestra los datos y el control que debe sumar... pues también, porque sumaria ese nombre de control: =Suma([CampoParaVer])
A lo mejor no he entendido nada, pero bueno, ahí queda.
http://aesoft-databases.com