|
Página 1 de 1
|
No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
Autor |
Mensaje |
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
Estaba yo pensando que si en este supuesto debería ser mejorado Result
- For n = 0 To resultado.Max
- .[n, 0].Text = resultado["Descripción"]
- resultado.MoveNext
- Next
- resultado.MoveFirst 'Si no ponemos esto el cursor estaría al final y cuando lo invocas te da un error
-
Y lo que pasa es que cuando termina el bucle el estado de resultado que no es mas que un Result el puntero esta al final como es de prever. Pero si necesitamos seguir usándolo a mi desde luego me pasa muy a menudo y es que se me olvida volver el puntero al primer elemento con resultado.MoveFirst y lo que propongo es como una regla, cuando metemos un objeto Result en un For-Next tras el final del bucle, este bucle debería saber de forma automática que el Result debería volver a su estado inicial osea hacer automáticamente resultado.MoveFirst
En fin, piénsenlo, debemos de evolucionar, no es una idea para nada ilógica.
Saludos y espero opiniones
última edición por gambafeliz el Jueves, 11 Junio 2020, 05:35; editado 2 veces
|
#1 Miercoles, 10 Junio 2020, 18:14 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
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
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#2 Miercoles, 10 Junio 2020, 20:15 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
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.
|
#3 Jueves, 11 Junio 2020, 05:57 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
sugiero algunas formas de usar un result
Esta para rercorrer el result
Llegado el caso res.MoveFirst asegura la vuelta a empezar
Esta otra forma la uso en evento _Data y uso resShow.MoveTo(Row)
Saludos
|
#4 Jueves, 11 Junio 2020, 12:21 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
Hola, gambafeliz
Volviendo a leer tu post, ya estoy dudando. Como lo has editado, ya no me acuerdo si al principio declarabas el objeto result dentro o fuera del bucle. En cualquier caso, el objeto y la consulta hay que declararla fuera del bucle, evidentemente, e ir iterando los resultados que devuelve el objeto result. Éste, en mi opinión, sólo es reutilizable si se vuelve a declarar o si -como bien dices- recolocas el cursor al principio. Para mí, lo más limpio es volverlo a declarar y justo después utilizarlo. Eso automáticamente devolverá los resultados de la nueva consulta. O bien, volver a llamar al procedimiento o función que efectúa la consulta.
Pero como cada cual hace las cosas a su manera, mientras no se produzcan errores inesperados, eres libre de mover el cursor donde quieras.
Para la representación gráfica de los resultados, el ejemplo de tincho usando el evento Data es el ideal, en lugar de ir escribiendo mediante bucles las celdas con cada campo.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#5 Jueves, 11 Junio 2020, 17:46 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
sugiero algunas formas de usar un result
Esta para rercorrer el result
Llegado el caso res.MoveFirst asegura la vuelta a empezar
Gracias, esto me será útil, lo conozco pero se me va la pelota y no lo uso.
Quiero dejar claro que aunque lo agradezco en realidad quería una opinión sobre mi pregunta, pero bueno, lo digo simplemente para centrar el tema.
Esta otra forma la uso en evento _Data y uso resShow.MoveTo(Row)
Esta bien pero se te ha olvidado algo muy importante y es decir en que momento se produce el evento _Data que yo sinceramente lo desconocía. Y que para que sea mas didáctico para los lectores pienso que se debería al menos explicar esto que te cuento, lo hace mas claro para los novatos en gambas como yo.
Gracias tincho y no veas mi conversación como algo atacante sino simplemente constructivo. Saludos.
|
#6 Jueves, 11 Junio 2020, 19:09 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: No Pensais Que Se Debería Corregirse Result En Un Bucle For-Next
Hola, gambafeliz
Volviendo a leer tu post, ya estoy dudando. Como lo has editado, ya no me acuerdo si al principio declarabas el objeto result dentro o fuera del bucle.
Nunca se vio la declaración de Result pero para dejarlo claro lo hago evidentemente antes del bucle sino peta el programa.
En cualquier caso, el objeto y la consulta hay que declararla fuera del bucle, evidentemente, e ir iterando los resultados que devuelve el objeto result. Éste, en mi opinión, sólo es reutilizable si se vuelve a declarar
Vuelvo a declarar pero entonces no estas entendiendo mi solicitud de este hilo, gastando una linea de código para o Declarar nuevamente el Result o para MoveFirst, me temo que estoy perdiendo el tiempo, sino entendéis lo que pretendo, es solo una conversación donde explico un caso y digo que el compilador debe corregir automaticamente lo Result después de un bucle For o While ya que lo saca tincho, da igual es que lo lógico es evitar que pete el programa por algo que el desarrollador del lenguaje conoce que va a pasar por un olvido del programador o usuario de Gambas.
En fin.
o si -como bien dices- recolocas el cursor al principio. Para mí, lo más limpio es volverlo a declarar y justo después utilizarlo. Eso automáticamente devolverá los resultados de la nueva consulta.
Esto no lo entiendo del todo, si lo redeclaro de nuevo, esto hace una llamada a la base de datos o en su defecto haces una declaración vinculando el anterior Result.
En fin no te como mas la cabeza, gracias por participar en mi consulta, te mando saludo, joven.
|
#7 Jueves, 11 Junio 2020, 19:39 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|