FoxPro/Visual FoxPro - Expresiones IF anidadas

 
Vista:

Expresiones IF anidadas

Publicado por patricio (27 intervenciones) el 29/01/2003 20:14:53
Nececito anidar 3 expresiones if, else, endif, pero no me resulta. Al momento de ejecutar, VFP me dice que que la expresión esta incompleta y me oscurece el segundo "else". Si elimino ese "else" ya no parece ningún error a la hora de ejecutar pero obviamnete mi programa no funciona adecuadamente. ¿Alguién me puede ayudar?
Gracias
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:Expresiones IF anidadas

Publicado por upliftmofopartyplan (265 intervenciones) el 29/01/2003 20:32:18
Hola!
deberías mostrar el código para ver el posible error.
no debería tener problemas, verifica que cada IF comience y termine adecuadamente.ej:
IF <condicion1> THEN
<comandos>
ELSE
IF <condicion2> THEN
<comandos>
ELSE
IF <condicion3> THEN
<comandos>
ELSE
<comadofinal>
ENDIF
ENDIF
ENDIF
esa sería la estructura. el comando final es lo que haría en el peor de los casos,aunque sea un mensaje de error.
yo he anidado hasta 8 IF sin problemas, la cuestión es que una vez que se entra a cualquier IF entregue un resultado.
cualquier cosa escribe.
Uplift
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

RE:Expresiones IF anidadas

Publicado por José (12 intervenciones) el 29/01/2003 21:20:55
Amigo Patricio, si por casualidad esos IFs trabajan con campos yo te aconsejaria que usaras expresiones del tipo set filter to campo=m.campo, por ejemplo, mas limpias y eficientes, si trabajas con variables entonces te aconsejo que revises bien esos if porque no pueden fallar
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

RE:Expresiones IF anidadas

Publicado por patricio (27 intervenciones) el 30/01/2003 01:12:51
Estimados amigos, gracias por su interés.
Si, de hecho estoy trabajando con campos y la estructura del código es así:

select (tabla1)
set order to (campo)
seek (expl)
if found()
select (tabla2)
set order to (campo)
seek (expl)
if found()
messagebox(expl)
else
select (tabla3)
set oder to (campo)
seek (expl)
if found
expl
else
messagebox (expl)
else
messagebox
endif
endif
endif

Me quedo en espera de sus sugerencias.
Saludos
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

RE:Expresiones IF anidadas

Publicado por upliftmofopartyplan (265 intervenciones) el 31/01/2003 19:31:53
Hola!
ignorando los errores de sintaxis que se ven, deduzco que:
buscas un valor en la tabla1, si NO existe das un mensaje y sales de todos los IF, SI existe lo buscas en la tabla2, SI existe en esta das un mensaje. si NO existe (en la tabla2), lo buscas en la tabla3, SI existe en esta haces algo, si NO existe (en la tabla3)das un mensaje.
esto es lo que hace actualmente tu código.
sin importar lo que quieras hacer, la estructura está mal, comparala con:
select (tabla1)
set order to (campo)
seek (expl)
if found()
select (tabla2)
set order to (campo)
seek (expl)
if found()
messagebox(expl)
else
select (tabla3)
set oder to (campo)
seek (expl)
if found() && esto fue cambiado
HACERALGO(expl) &&esto fue cambiado
else
messagebox (expl)
ENDIF &&esto fue agregado
ENDIF &&esto fue agregado
else
messagebox
endif
prueba y me cuentas
Uplift
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

RE:Expresiones IF anidadas

Publicado por patricio (27 intervenciones) el 03/02/2003 19:25:34
¡¡Funcionó!!!, muchas gracias, aunque me quedo con la duda acerca del uso del set filter y la toma de decisiones con esto. Jose, tal vez pudieras orientarme.

Saludos y nuevamente gracias.
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

problema con el comando if

Publicado por luciano spagnoli (10 intervenciones) el 08/09/2010 21:40:11
hola, aca les paso la programacion de uno de los botones de mi formulario, cuando queremos que salte un mensaje que nos indique rellenar datos, nos tira un error
como se debe usar correctamente o que error tenemos...
desde ya muchas gracias

STORE SPACE (10) TO A
STORE SPACE (30) TO B
STORE 0 TO C
STORE 0 TO D
A=thisform.text1.Value
C=thisform.text2.Value
B=thisform.text3.Value
D=thisform.text4.Value
USE ctasctes INDEX numsocio, nomsocio, fecha, importe, mesaporta
IF thisform.Optiongroup1.Option1.value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Enero"
ENDIF
IF thisform.optiongroup1.option2.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Febrero"
ENDIF
IF thisform.optiongroup1.option3.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Marzo"
ENDIF
IF thisform.optiongroup1.option4.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Abril"
ENDIF
IF thisform.optiongroup1.option5.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Mayo"
ENDIF
IF thisform.optiongroup1.option6.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Junio"
ENDIF
IF thisform.optiongroup1.option7.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Julio"
ENDIF
IF thisform.optiongroup1.option8.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Agosto"
ENDIF
IF thisform.optiongroup1.option9.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Septiembre"
ENDIF
IF thisform.optiongroup1.option10.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Octubre"
ENDIF
IF thisform.optiongroup1.option11.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Noviembre"
ENDIF
IF thisform.optiongroup1.option12.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Diciembre"
ENDIF
IF thisform.optiongroup1.option13.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Todo el Año"
ENDIF

IF thisform.text1.Value = 0 THEN
MESSAGEBOX("Faltan rellenar datos")
ENDIF
IF thisform.text3.Value = 0 THEN
MESSAGEBOX("Faltan rellenar datos")
ENDIF
IF thisform.text2.Value = 0 THEN
MESSAGEBOX("Faltan rellenar datos")
ENDIF
IF thisform.text4.Value = 0 THEN
MESSAGEBOX("Faltan rellenar datos")
ENDIF

thisform.text1.Value = ""
thisform.text2.Value = ""
thisform.text3.Value = ""
thisform.text4.Value = ""
CLOSE ALL
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