1.Que es un Bucle?
Es lo que permite ejecutar una o mas lineas de codigos tantas veces como sea necesario.
En Visual FoxxPro hay tres comando para poder realizar a cabo los Bucles..:
*Scan y su terminacion ENDSCAN
*FOR y su terminacion ENDFOR
*DOWHILE y su terminacion ENDDO
2.El Bucle Scan.
Utiliza SCAN, para Cuando realices una serie de acciones para cada uno de los registros de una tabla q tengas,
Por ejemplo,
Este code q analize,
SCAN
IF salario >= 100000000
REPLACE salary WITH ;
salario * 1,03
ELSE
REPLACE salario WITH ;
salario * 1,06
ENDIF
ENDSCAN
---------------------------------------------
El Bucle SCAN permite escribir el codigo una vez y ejecutarlo para cada registro a medida que el puntero de registro se desplaze por la tabla.
3.El Bucle FOR.
Este Bucle lo utilizaras para cuando sepas cuantas veces debe ejecutarc la seccion de codigo.
Por ejemplo, sabe q una tabla contiene un numero especifico de campos.
Suponiendo q la Funcion FCOUNT() deVisual FoxPro devuelve un numero,
puede utilizar un bucle FOR para imprimir los nombres de todos los campos de la tabla.
Por ejemplo Miren este code:
FOR nCnt = 1 TO 14
cTest = “123-456-7 89 0”
? SUBSTR(cTest, nCnt, 1)
ENDFOR
lo hice rapidito, no creo q tenga errores, ai demuestra la funcion de el Bucle FOR.
----------------------------------------------------
3.Bucle DO WHILE.
Utiliza este bucle cuando desee ejecutar una seccionde codigo mientras cumpla una determinada condicion.
Aca este code, lo hizo mi profesor, io solo le explicare.
nAqui = RECNO() *Esto Guarda la posicion situada en el registro.
cIniciales = LEFT(nombre,1)+; *Obtiene las iniciales de la persona, a partir de las primeras letras de campos nombre y
LEFT(apellidos,1) apellido.
nsufijo = 0
LOCATE FOR id_persona = *Comprueba si hay mas personas en las tabla cuya iniciales sean las mismas.
cIniciales Si en otro registro de la tabla hay un valor id_persona que coincide con cIniciales, entonces
DO WHILE FOUND( ) la funcion FOUND() devolvera el valor True, osea verdadero, y se ejecutara el bucle DO WHILE
, pero si no se parecen en nada, entonces se ejecutara la linea q figura a continuacion de
ENDDO.
nSufijo = nSufijo + 1 *Prepara un sufijo nuevesito pa lo tiguere xd, y lo anexa alas iniciales.
cIniciales = ;
LEFT(cIniciales,2);
+ ALLTRIM(STR(nSufijo))
CONTINUE *CONTINUE hace q se vuelva a evaluar el ultimo comando q es LOCATE.el programa comprueba
si el nuevo valor contenido en cIniciales ya existe en el campo id_persona de otro registro.
Si es Found() seguira devolviendo el valor Truey se volvera a ejecutar el bucle DO WHILE.
Pero si el valor contenido en cIniciales es unico, devolvera False, y el programa figurara a
lalinea a continuacion de ENDDO.
ENDDO * Este es el final de Bucle DO WHILE.
GOTO nAqui *Vuelve al registro y almacena el codigo de identificacion unico en el campo id_persona.
REPLACE id_persona WITH
cIniciales
---------------------------------------------------------------------------------------------------------
By N3xtdoor.(Nestor E. C.)
Espero q lo haigan entendido.