busqueda condicionada


([N3] Servinfor) #1

Hola quiero modificar el valor de un campo dentro de una busqueda segun una condicion para ello pongo

busqueda()
recorrer lista lectura escritura
if(condicion)
else ()

Y me cambia el valor en toda la lista que cumple la condicion y no solo en los registros de la busqueda que cumplen la condicion

¿que pongo mal?


([N2] AyudaVelneo) #2

Hola:

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.

Un saludo


([N1] Lydia.dfr) #3

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


([N3] Servinfor) #4

vale pero ¿porque me lo cambia en toda la lista y no sólo en la busqueda?


([N2] AyudaVelneo) #5

Hola:

O bien tienes mal puesto el recorrer lista… o la condición para modificar el campo siempre es verdadera.

Un saludo


([N1] vgegeo) #6

El if esta anidado dentro del Recorrer lista ??

¿Que tienes en el else?


([N3] Servinfor) #7

Os mando la pantalla. Me convierte el campo MARCAR en 1 en toda la tabla y no en la busqueda



([N2] AyudaVelneo) #8

Vale…

Si la modificación del campo lo realiza correctamente (aunque en los registros equivocados), el problema lo tienes en la búsqueda… no en la condición.

Supongo que la búsqueda la tendrás condicionada… revisa las condiciones de los índices.

Un saludo


([N1] Lydia.dfr) #9

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)