Como continuación del articulo anterior, puedo añadir una informacion adicional que he tenido que recuperar al encontrarme con un sistema mas antiguo que no soporta el uso del rtnlist en la sentencia execute.
Hay una alternativa, pero solo controlaremos dos listas, una primaria y una secundaria, si bien es cierto que será mas que suficiente en la mayoria de los casos.
La primera lista sera generada con normalidad sin datos adicionales y sera en el segundo select donde añadimos la opción (s que convierte la selección en secundaria. De esta forma podremos usar el readnext con el modificador secondary y no se mezclan los punteros de los respectivos readnext.
Intentare que se vea mas claro con este ejemplo del mismo código del ejemplo anterior adaptado a esta nueva forma de controlar las listas :
execute «lista colores»
loop
readnext color
execute «selecc articulos con color =»:color:» (s»
loop
readnext itemarticulo secondary
….. sentencias con itemarticulo …
until eof do repeat
until eof do repeat
De esa nueva forma también se pueden anidar listas y ejecuciones selecc sin preocuparnos de que se mezclen punteros y por tanto resultados.