Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como romper un ciclo while

Estas en el tema de Como romper un ciclo while en el foro de Visual Basic clásico en Foros del Web. Hola a todos grandes saludos desde aqui. La situación es la siguiente: Tengo un modulo en el que manejo un ciclo while y dentro de ...
  #1 (permalink)  
Antiguo 08/10/2007, 17:51
Avatar de juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Como romper un ciclo while

Hola a todos grandes saludos desde aqui.

La situación es la siguiente: Tengo un modulo en el que manejo un ciclo while y dentro de este ciclo tengo varias validaciones mediante uso de los IF..THEN..ELSE...END IF y en una de estas validaciones tiene que salir de ciclo si es verdadera la condición... como puedo hacer que se termine el ciclo aun sabiendo que no llega al final el mismo?...

Desde ahora muchas gracias por sus respuestas... cualquier cosa aqui estoy por si no me explique claramente... gracias....
  #2 (permalink)  
Antiguo 08/10/2007, 20:48
Avatar de Vanchi
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: Io voy donde vo' vai... Ca'eza
Mensajes: 1.111
Antigüedad: 17 años, 3 meses
Puntos: 138
Re: Como romper un ciclo while

Cita:
Iniciado por juanutcm Ver Mensaje
Hola a todos grandes saludos desde aqui.

La situación es la siguiente: Tengo un modulo en el que manejo un ciclo while y dentro de este ciclo tengo varias validaciones mediante uso de los IF..THEN..ELSE...END IF y en una de estas validaciones tiene que salir de ciclo si es verdadera la condición... como puedo hacer que se termine el ciclo aun sabiendo que no llega al final el mismo?...

Desde ahora muchas gracias por sus respuestas... cualquier cosa aqui estoy por si no me explique claramente... gracias....
El ciclo Do/Loop se sale con Exit Do

Saludos
__________________
Según recientes estudios científicos, los 3 más grandes descubrimientos de la humanidad son: El fuego, la rueda y la minifalda.
Yo personalmente no le encuentro mucha utilidad a los 2 primeros.
  #3 (permalink)  
Antiguo 09/10/2007, 05:24
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Como romper un ciclo while

Cita:
Iniciado por Vanchi Ver Mensaje
El ciclo Do/Loop se sale con Exit Do

Saludos
Y el While con
Código:
Exit While
  #4 (permalink)  
Antiguo 09/10/2007, 06:19
Avatar de juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 1 mes
Puntos: 0
Como romper un ciclo while

Muchas gracias por la respuesta pero en sus respuestas mencionan algo de lo que ya tenia conocimiento y tal ves no me explique bien ...

Lo que realizo es hacer un barrido del contenido de una tabla mediante una consulta en el dataenvironment
Código:
 
while consulta.eof=false
      instruccion1
      instruccion2
      'Aqui es donde tengo problemas por que me marca error, dice que algo falta
     if condicion then
          exit while
     end if
wend
  #5 (permalink)  
Antiguo 09/10/2007, 08:20
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Como romper un ciclo while

Cita:
Iniciado por juanutcm Ver Mensaje
Muchas gracias por la respuesta pero en sus respuestas mencionan algo de lo que ya tenia conocimiento y tal ves no me explique bien ...

Lo que realizo es hacer un barrido del contenido de una tabla mediante una consulta en el dataenvironment
Código:
 
while consulta.eof=false
      instruccion1
      instruccion2
      'Aqui es donde tengo problemas por que me marca error, dice que algo falta
     if condicion then
          exit while
     end if
wend
Capaz que para lo que queres te combiene usar un hacer en vez de un mientras.

Asi como lo mostras no creo que tendrias que tener problemas, pone todo el codigo real y vemos que esta pasando.
  #6 (permalink)  
Antiguo 09/10/2007, 15:15
Avatar de juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 1 mes
Puntos: 0
Primera Parte

Código:
While dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno.EOF <> True 'Bucle controlador de tabla principal a barrer
            'INICIO DE OPTIMIZAR EL CÓDIGO
               Select Case dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!FormaAcreditar 'Identificar la forma de acreditación de la materia
                  Case "ORDINARIA"
                  'INICIO DE OPTIMIZAR CÓDIGO
                  'Sección para obtener de las claves de las formas de acreditar las materias
                        If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!BanderaRecursada <> "SI" Then 'Validar la forma de acreditar "ORDINARIA EN RECURSAMIENTO"
                        'INICIO DE OPTIMIZAR CÓDIGO
                            strClaveFormaAcreditarMateria = GetClaveFormaAcreditarMateria(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!FormaAcreditar) 'Llamar a funcion para obtener la clave correspondiente según su forma de acreditar
                        'FIN DE OPTIMIZAR CÓDIGO
                        Else
                        'INICIO DE OPTIMIZAR CÓDIGO
                            strClaveFormaAcreditarMateria = GetClaveFormaAcreditarMateria("RECURSADA") 'Llamar a funcion para obtener la clave correspondiente según su forma de acreditar
                        'FIN DE OPTIMIZAR CÓDIGO
                        End If 'Fin de validar la forma de acreditar "ORDINARIA EN RECURSAMIENTO"
                        Call mdlPublicos.DoModificarTemporalClaveFormaAcreditarMateria(strClaveFormaAcreditarMateria, dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar el procedimiento para guardar la clave de forma de acreditar la materia
                   'Fin de sección para obtener las claves de las formas de acreditar las materia
  #7 (permalink)  
Antiguo 09/10/2007, 15:18
Avatar de juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 1 mes
Puntos: 0
Segunda Parte

Código:
 
'Sección para el calculo de las calificaciones
                    If dteControlEscolar.rsqryBusquedaAlumno!Nombre <> "LICENCIATURA EN DERECHO" Then
 
 
                    'SISTEMA DE EVALUACIÓN PARA EL IPN
                        If optEnteros.Value = True Then
                            'Sección para el calculo de las calificaciones
                                intEvalua1 = 0 'Asignar valor de inicialización a la variable
                                intEvalua2 = 0 'Asignar valor de inicialización a la variable
                                intEvalua3 = 0 'Asignar valor de inicialización a la variable
                                intEvalua1 = GetPrimeraEvaluacion(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar a la función para obtener el valor de la primera evaluación de cada materia
                                intEvalua2 = GetSegundaEvaluacion(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar a la función para obtener el valor de la segunda evaluación de cada materia
                                intEvalua3 = GetTerceraEvaluacion(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar a la función para obtener el valor de la segunda evaluación de cada materia
                                vntPromedioMateriaRedondeado = GetRedondeoPromedioMateriaTerceraIpn(intEvalua1, intEvalua2, intEvalua3, dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar a la función para obtener el promedio de una materia de forma redondeada
                                vntPromedioGeneral = vntPromedioGeneral + vntPromedioMateriaRedondeado 'Sumar y asignar todas la evalauiciones para el promedio general
                                Call DoGuardarPromedioMateriaEvaluacion(vntPromedioMateriaRedondeado, dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 
                                If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "NP" Then 'Validar los casos en donde la tercer evaluacion tiene "NP"
                                   Call DoGuardarPromedioMateriaEvaluacion("0", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno)
                                Else
                                   If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "SD" Then 'Validar los casos en donde la tercer evaluacion tiene "SD"
                                      Call DoGuardarPromedioMateriaEvaluacion("SD", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar al procedimiento para guardar el promedio redondeado de una materia en su tercera evaluacion
                                   Else
                                      If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1 = "NP" And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2 = "NP" And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "NP" Then 'Validar los casos en donde todas las evaluaciones tienen valor de "NP"
                                         Call DoGuardarPromedioMateriaEvaluacion("0", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar al procedimiento para guardar el promedio redondeado de una materia en su tercera evaluacion
                                      Else
                                         If IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1) And IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2) And IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3) Then  'Validar los casos en donde todas la evaluaciones tienen el valor "Null" o " "
                                            Call DoGuardarPromedioMateriaEvaluacion(" ", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar al procedimiento para guardar el promedio redondeado de una materia en su tercera evaluacion
                                         Else
                                            If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1 = " " And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2 = " " And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = " " Then 'Validar los casos en donde todas la evaluaciones tienen el valor " "
                                               Call DoGuardarPromedioMateriaEvaluacion(" ", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno) 'Llamar al procedimiento para guardar el promedio redondeado de una materia en su tercera evaluacion
                                            End If 'Fin de validar los casos en donde todas las evaluaciones tienen el valor " "
                                         End If 'Fin validar los casos en donde todas las evaluaciones tienen el valor "Null"
                                      End If 'Fin de evaluar los casos en donde todas las evaluaciones tienen el valor de "NP"
                                   End If 'Fin de evaluar los casos en donde la tercer evaluacion tiene el vaor de "SD"
                                End If 'Fin de evaluar los casos en donde la tercer evaluación tiene el valor de "NP"
                            'Fin de sección para el calculo de las calificaciones
 
                            'Sección para obtener la calificacion en letra
                              If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "NP" Then 'Validar los casos en donde la tercer evaluacion tiene "NP"
                                 Call DoModificarTemporalCalificacionLetraFormaAcreditar("CERO", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                              Else
                                 If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "SD" Then 'Validar los casos en donde la tercer evaluacion tiene "SD"
                                    Call DoModificarTemporalCalificacionLetraFormaAcreditar("SD", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                                 Else
                                    If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1 = "NP" And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2 = "NP" And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = "NP" Then 'Validar los casos en donde todas las evaluaciones tienen valor de "NP"
                                       Call DoModificarTemporalCalificacionLetraFormaAcreditar("CERO", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                                    Else
                                       If IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1) And IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2) And IsNull(dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3) Then  'Validar los casos en donde todas la evaluaciones tienen el valor "Null" o " "
                                          Call DoModificarTemporalCalificacionLetraFormaAcreditar(" ", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                                       Else
                                          If dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua1 = " " And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua2 = " " And dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!Evalua3 = " " Then 'Validar los casos en donde todas la evaluaciones tienen el valor " "
                                             Call DoModificarTemporalCalificacionLetraFormaAcreditar(" ", dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                                          Else
                                             strPromedioMateriaRedondeadoLetra = mdlPublicos.GetCalificacionLetra(vntPromedioMateriaRedondeado) 'Asignar a la variable el valor de la llamaada a la función para obtener el valor de la primera evaluación de cada materia
                                             Call DoModificarTemporalCalificacionLetraFormaAcreditar(strPromedioMateriaRedondeadoLetra, dteControlEscolar.rsqryBusquedaMateriasSemestralesAlumno!IdEvaluaciones) 'Llamar al procedimiento para guardar en un campo temporal la calificación promedio de la materia
                                          End If 'Fin de validar los casos en donde todas las evaluaciones tienen el valor " "
                                       End If 'Fin validar los casos en donde todas las evaluaciones tienen el valor "Null"
                                    End If 'Fin de evaluar los casos en donde todas las evaluaciones tienen el valor de "NP"
                                 End If 'Fin de evaluar los casos en donde la tercer evaluacion tiene el vaor de "SD"
                              End If 'Fin de evaluar los casos en donde la tercer evaluación tiene el valor de "NP"
                            'Fin de sección para obtener la calificacion en letra
                       Else
                         MsgBox "No es posible generar el reporte en esta modalidad, por favor seleccione la modalidad correcta.", vbCritical + vbOKOnly, "SICE"
                     End If 
En la parte marcada de rojo es donde necesito que se rompa el ciclo por que no paso esa validacion... ojala me puedan ayudar realmente lo necesito
  #8 (permalink)  
Antiguo 09/10/2007, 15:33
Avatar de juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Como romper un ciclo while

LISTO LO HE RESUELTO O AL MENOS HASTA AHORA PASO LAS PRIMERAS PRUEBAS LO UNICO QUE TUVE QUE HACER NO FUE TERMINAR EL CICLO SINO TERMINAR EL PROCEDIMIENTO COMPLETO DEBIDO A QUE LLEGANDO A ESTA INSTRUCCION NO ES NECESARIO REALIZAR LAS SIGUIENTES LINEAS SI NO HA PASADO LA CONDICION ESTABLECIDA....

Cita:
Else
MsgBox "No es posible generar el reporte en esta modalidad, por favor seleccione la modalidad correcta.", vbCritical + vbOKOnly, "SICE"
End If


Código:
Else
Código:
MsgBox "No es posible generar el reporte en esta modalidad, por favor seleccione la modalidad correcta.", vbCritical + vbOKOnly, "SICE"
Exit Sub 
Código:
End If
 

Muchas gracias pero de igual manera seguire pendiente del comportamiento que tenga esta solución..... chao y estamos en contacto... foreros

Última edición por juanutcm; 09/10/2007 a las 15:34 Razón: Quedo mal redactado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:57.