Hola, Iniaki.
>Despues de indagar el problema se reduce a que si coloco el siguiente codigo en un boton:
>
>CALCULATE sum (total) FOR comprob='001' WHILE fecha < CTO("1/7/2003") AND fecha >= CTOD("1/4/2003") TO trim2 IN auxmov
>
>messagebox(trim2)
>
>Muestra el valor correcto solamente la primera vez que clicas el boton.
>Posteriormente devuelve 0.
El problema es que al usar la cláusula WHILE implícitamente estás diciéndole que no recorra desde el principio del cursor.
Agrega un LOCATE (o GO TOP) justo antes de esta línea y funcionará siempre.
Por otro lado, ten cuidado al utilizar CTOD() de esa manera. Ese cófigo no funcionará si en algún momento cambia el SET DATE. Es mucho mejor usar DATE(2003,7,1), que siempre devuelve el primero de julio sin importar el SET DATE.
Saludos,