Mensajes: 830
Jueves, 11 Junio 2020, 05:57
Hola
Me resulta raro usar Result dentro de un bucle, ya que precisamente lo que hace result es iterar en los resultados de la consulta. Me parece un error de diseño o quizás esté equivocado y tenga algún sentido...
De hecho, en la segunda iteración del bucle, el objeto result ya no devuelve resultados como es lógico, a menos que se inicialice de algún modo. ¿Puedes explicar (si te apetece) cuál es la motivación para hacer eso?
Saludos
Hooola jguardon
Para mi Result es una tabla por decirlo así. Result en sí no itera nada, aunque si es un objeto como una tabla el cual es posible recorrerlo con sus diferentes propiedades MOVE.
Imaginemos que el Result tiene una lista de 2 elementos y una sola columna.
1. Creamos un bucle For-Next e iteramos o llamamos elemento a elemento.
2. Cuando llega al final de la lista el cursor esta lógicamente al final
3. El bucle termina su iteración y salimos fuera del bucle para proseguir con la siguiente linea de código
Te expongo una breve explicación: Tu y yo somos programadores y sabemos que el cursor tras el bucle queda al final, pero no siempre te das cuenta y escribes nuevo código tras este bucle para seguir usando el Result, (ERROR) tras el bucle, el Result sin acordarte que debes inicializar el cursor al primer elemento, a mi me pasa mucho simplemente me abstraigo y sigo programando. Pero el diseñador de un lenguaje, lo sabe estas en un bucle y sabe que están los dos elementos (For-Next y Result) por que no inicializa el cursor de Result automáticamente sin que intervenga el usuario (el programador) es algo que obliga a recordar y además un Result.MoveFirst después de un bucle es feo.
Por supuesto es una simple opinión, pero creo que se puede hacer, es una evolución del lenguaje, y mejora la usabilidad para el usuario del lenguaje, además que es algo lógico y no es complicado de hacer, también puede ser que como es un objeto independiente (Result), y tiene un funcionamiento como el actual, simplemente no interacciona con su entorno, pero para eso debería estar el compilador, el cual debería evolucionar y detectar errores simples como este, añadiendo de forma automática la linea siguiente al bucle For-Next e implementar Result.MoveFirst por poner un ejemplo.
En fin, esta es mi nueva explicación.
Saludos.