Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Salir del bucle for each --- next
#1

Buen día.
Voy a plantear mi duda, espero explicarme bien.
Tengo un formulario principal (FMain) que contiene dos Panel (panel1 y panel2).
Un formulario (Frequest) en el cual tengo un gridview  del tipo cGrid ( que es una clase). Ahí se despliegan datos de una base de datos.
Desde FMain se pueden generar dos objetos tipo Frequest que se incrustarán en los paneles  Panel1 y Panel2. Puedo agregar y quitar lineas de los gridview. Hasta ahí, el programa trabaja bien. 

Mi problema surge cuando trato de modificar esos datos automáticamente haciendo un click en un botón. Utilicé el siguiente código:

  mm = 0
    For Each tempForm In FMain.Panel1.Children
        ww = tempForm
        For Each tempGrid In ww.Children
            tt = tempGrid
            If tt Is CGrid Then
                tt.Select
                mm = tt.Rows.Count
                If mm <> 0 Then 
                    For n = 0 To mm - 1
                        LeerModificarGridLinea(n, tt)
                    Next
                Endif
            Endif
            mm = 0
        Next
    Next

Empieza bien, busca los objetos dentro del Panel1 que a su vez contiene el objeto Frequest que contiene el objeto Gridview. Ejecuta la subrutina LeerModificarGridLinea. El problema viene cuando trata de buscar otro objeto Gridview. Al parecer encuentra otro más (lo cual se supone que no existe), traté de poner una variable mm que indica cuantas filas tiene ese Gridview. 
Cuando encuentra por primera vez el gridview, mm = 0 cambia al valor m=9 (como ejemplo) lee bien todas las líneas, en la segunda vuelta,  el valor de mm lo reseteo a mm= 0 y al encontrar el "segundo gridview"  vuelve a tomar el valor de m= 9 pero ahora sin valores en las celdas, generando error.

¿Me pueden dar una idea de cómo puedo solucionarlo?  Pensaba forzar la salida ( en virtud de que no va a existir nunca un segundo gridview dentro de Panel 1) . Pero no tengo idea de cómo forzar esa "salida". 
Por lo demás, creo que forzar este tipo de salidas puede generar muchos problemas.
    ¡Gracias!
#2

(21-03-2022, 20:52)YuHi escribió:  Pensaba forzar la salida

GAMBAS
  1.   mm = 0
  2.     For Each tempForm In FMain.Panel1.Children
  3.         ww = tempForm
  4.         For Each tempGrid In ww.Children
  5.             tt = tempGrid
  6.             If tt Is CGrid Then
  7.                 tt.Select
  8.                 mm = tt.Rows.Count
  9.                 If mm <> 0 Then 
  10.                     For n = 0 To mm - 1
  11.                         LeerModificarGridLinea(n, tt)
  12.                     Next
  13.                 Endif
  14.                 Break ' Esto hace que se termine el bucle
  15.             Endif
  16.             mm = 0
  17.         Next
  18.     Next



1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • YuHi
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje
Último mensaje por Shell
27-10-2021, 18:26

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)