Pues hombre… así sin ver un poco mas (como tienes la búsqueda, la condición, etc…)
Yo lanzaría desde un manejador un proceso, en tercer plano,al que le pasaría las condiciones de la búsqueda y en una variable la condición para modificar. Desde ese proceso dispararía la búsqueda y devolvería los registros al proceso que se encargaría de modificar el campo o campos que necesitases.
Hola, yo mucho no controlo las busquedas y eso (y normalemte las lanzo como crear manejador de objeto y eso) has de comprobar cuantos resultados te devuelve la busqueda con mensajes, pues a lo mejor, lo que te falla es que la busqueda no hace lo que realmente esperas
Yo te diria que pusieras un mensaje que te diga el tamaño de la lista antes de la busqueda, y uno despues de la busqueda, porque lo mas seguro es que tu busqueda te devuelva toda la lista.
Otra comprobacion es un cargar lista actividades_clientes_var_mem y filtrar por correomailsi=0, y lanzar mensaje con el numero de elementos (syslistsize) para saber cuantos pasan por el else (que en tu caso, parece que son todos, pero asi sabrias que el problema es el campo que todos lo tienen a 0)