FoxPro/Visual FoxPro - do while

 
Vista:

do while

Publicado por eduardo (1 intervención) el 18/01/2011 00:35:47
Hola programadores, tengo un problema espero me puedan ayudar.

creo una pantalla donde se introduce x informacion, cuando realizo un programa en el boton de guardar tengo lo siguiente, pero cuando entra al do while lo salta como si la condicion no se cumpliera, espero me puedan ayudar

WITH thisformset.adecuaciones
If EMPTY(.xfolio1.value) .or. EMPTY(.xprograma1.value) .or. EMPTY(.xsubprog1.value) .or. EMPTY(.xpartida1.value) .or. EMPTY(.xreduccion1.value) .or. EMPTY(.xmes1.value)
wait wind "Faltan Datos, no puede Guardarse el Registro...." timeout 2
.xfecha1.SetFocus()
Return
ELSE
SELECT 3
xfolio=.xfolio1.value
xprograma=.xprograma1.value
xsubprograma=.xsubprog1.value
xmes=.xmes1.value
xreduccion=.xreduccion1.value
xampliacion=xreduccion-xreduccion
xampliaciona=xreduccion-xreduccion
APPEND BLANK
DO CASE
CASE .xmes1.value="1"
replace ene1 WITH VAL(xreduccion)
CASE .xmes1.value="2"
replace feb1 WITH VAL(xreduccion)
CASE .xmes1.value="3"
replace mar1 WITH VAL(xreduccion)
CASE .xmes1.value="4"
replace abr1 WITH VAL(xreduccion)
CASE .xmes1.value="5"
replace may1 WITH VAL(xreduccion)
CASE .xmes1.value="6"
replace jun1 WITH VAL(xreduccion)
CASE .xmes1.value="7"
replace jul1 WITH VAL(xreduccion)
CASE .xmes1.value="8"
replace ago1 WITH VAL(xreduccion)
CASE .xmes1.value="9"
replace sep1 WITH VAL(xreduccion)
CASE .xmes1.value="10"
replace oct1 WITH VAL(xreduccion)
CASE .xmes1.value="11"
replace nov1 WITH VAL(xreduccion)
CASE .xmes1.value="12"
replace dic1 WITH VAL(xreduccion)
ENDCASE
REPLACE fecha1 WITH .xfecha1.VALUE, folio WITH .xfolio1.value, programa1 WITH .xprograma1.value, subprog1 WITH .xsubprog1.value
replace partida1 WITH .xpartida1.value, reduccion WITH .xmes1.value
ENDIF
*xampliacion=0
*xampliaciona=0
DO WHILE xampliacion<xreduccion
ThisFormSet.ampliacion.show()
* regresa de la ventana de captura
If EMPTY(.xprograma1.VALUE) .or. EMPTY(.xsubprog1.VALUE) .or. EMPTY(xpartida1.VALUE) .or. EMPTY(.xampliacion1.VALUE)
wait wind "Faltan Datos, no puede Guardarse el Registro...." timeout 2
*.xprograma2.SetFocus()
ThisFormSet.ampliacion.HIDE()
Return
ELSE
SELECT 3
*xfolio=xfolio1
*xprograma=xprograma1
*xsubprograma=xsubprograma1
*xmes=xmes1
*xreduccion=xreduccion1
APPEND BLANK
DO CASE
CASE .xmes1.value="1"
replace ene1 WITH VAL(xampliacion)
CASE .xmes1.value="2"
replace feb1 WITH VAL(xampliacion)
CASE .xmes1.value="3"
replace mar1 WITH VAL(xampliacion)
CASE .xmes1.value="4"
replace abr1 WITH VAL(xampliacion)
CASE .xmes1.value="5"
replace may1 WITH VAL(xampliacion)
CASE .xmes1.value="6"
replace jun1 WITH VAL(xampliacion)
CASE .xmes1.value="7"
replace jul1 WITH VAL(xampliacion)
CASE .xmes1.value="8"
replace ago1 WITH VAL(xampliacion)
CASE .xmes1.value="9"
replace sep1 WITH VAL(xampliacion)
CASE .xmes1.value="10"
replace oct1 WITH VAL(xampliacion)
CASE .xmes1.value="11"
replace nov1 WITH VAL(xampliacion)
CASE .xmes1.value="12"
replace dic1 WITH VAL(xampliacion)
ENDCASE
REPLACE fecha1 WITH .xfecha1.VALUE, folio WITH .xfolio1.value, programa1 WITH .xprograma2.value, subprograma1 WITH .xsubprograma2.value
replace partida1 WITH .xpartida2.value, ampliacion WITH .xmes1.value
xampliacion=.xampliacion.value+.xampliacion1.value
xampliaciona=.xampliaciona.value+.xampliacion1.value
IF .xampliacion.value=.xreduccion.value
wait wind "Se ha registrado correctamente la adecuación" timeout 2
ELSE
wait wind "Existe una diferencia entre la reducción y la ampliación, continúe el registro" timeout 2
ThisFormSet.ampliacion.HIDE()
ENDIF
ENDIF
ENDDO
ThisFormSet.adecuaciones.hide()
ThisFormSet.principal.show()
ENDWITH
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:do while

Publicado por xx (378 intervenciones) el 18/01/2011 02:07:59
Pon el siguiente wait exactamente antes del do while y te mostrara los valores antes del bucle y comprobaras que no se cumple la condicion y por ello no ingresa en el bucle

*xampliacion=0
*xampliaciona=0
wait [xampliacion=]+STR(xampliacion)+[xampliaciona=]+STR(xampliacion) windows
DO WHILE xampliacion<xreduccion
...
ENDDO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:do while

Publicado por Juan Manuel Cruz (512 intervenciones) el 19/01/2011 12:26:46
Lo más recomendable es que pongas set step on al inicio y hagas una depuración línea por línea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar