como implemento un ciclo FOR o un WHILE en foxpro

davideze25
24 de Abril del 2004
que tal, necesito saber como implemento un ciclo FOR o un WHILE en visual foxpro, necesito saber cual es la sintaxis, si alguien sabe como hacerle se los agradeceria, gracias. mi correo es [email protected]

123
24 de Abril del 2004
ESTOS EJEMPLOS VIENEN EN LAS AYUDAS DE VFP
ESPERO QUE TE FUNCIONEN....
SI EN ALGO TE PUEDO AYUDAR ENVIAME UN MENSAGE POR FAVOR, CON MUCHO GUSTO TE AYUDARE EN LO QUE PUEDA...

Ejemplo
En el ejemplo siguiente se calcula el n煤mero total de productos en existencias cuyo precio supera los 20 d贸lares en el bucle DO WHILE hasta llegar al final del archivo (EOF). Se sale del bucle DO WHILE y se muestra el total.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Datatestdata')
USE products && Opens Products table
SET TALK OFF
gnStockTot = 0
DO WHILE .T. && Begins loop
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && Ends loop
CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

*** ESTE EJEMPLO ES DE UN FOR

Ejecuta un conjunto de comandos para cada elemento en una matriz o colecci贸n de Visual FoxPro.

FOR EACH Var IN Group
Commands
[EXIT] [LOOP] ENDFOR | NEXT [Var]
Valores de la propiedad
Var
Una variable o un elemento de una matriz utilizado para iterar en los elementos de Group.
Group
Una matriz de Visual FoxPro, una matriz OLE, una colecci贸n de Visual FoxPro o una colecci贸n de OLE.
Commands
Especifica los comandos de Visual FoxPro que se van a ejecutar para cada elemento de Group. Commands puede incluir cualquier n煤mero de comandos.
EXIT
Transfiere el control de dentro del bucle FOR EACH ... ENDFOR al comando inmediatamente despu茅s de ENDFOR. Puede colocar EXIT en cualquier sitio entre FOR EACH y ENDFOR.
LOOP
Devuelve el control directamente a la cl谩usula FOR EACH sin ejecutar las instrucciones que hay entre LOOP y ENDFOR. LOOP se puede colocar en cualquier lugar entre FOR EACH y ENDFOR.
Ejemplos
En los siguientes ejemplos se muestra la utilizaci贸n de FOR EACH para enumerar elementos de una matriz de Visual FoxPro, de una matriz OLE y un conjunto de botones de comando asignados a una matriz.

En el siguiente ejemplo, se crea una matriz de variables de Visual FoxPro y se utiliza FOR EACH para mostrar el contenido de cada elemento de la matriz.

DIMENSION cMyArray(3)
cMyArray[1] = 'A'
cMyArray[2] = 'B'
cMyArray[3] = 'C'
FOR EACH cMyVar IN cMyArray
? cMyVar
ENDFOR
En el siguiente ejemplo, se crea una instancia de Microsoft Excel y se agrega un nuevo libro. FOR EACH se utiliza para mostrar el nombre de cada hoja de c谩lculo del libro. Este ejemplo requiere que Microsoft Excel est茅 correctamente instalado en la m谩quina en la que se ejecute el ejemplo.

oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD
FOR EACH oMyVar IN oExcel.sheets
? oMyVar.name
NEXT oMyVar
En el siguiente ejemplo se colocan cinco botones de comando en un formulario. FOR EACH se utiliza para mostrar los botones del formulario y para especificar los t铆tulos, los estilos de fuentes y las posiciones de cada bot贸n.

PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW
DEFINE CLASS frmTest AS FORM
Height = 200
DIMENSION MyArray[5]
PROCEDURE Init
FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR
****** FOR EACH - NEXT ******
FOR EACH oButton IN THIS.MyArray
oButton.Visible = .T.
NEXT
****** FOR EACH - NEXT element ******
FOR EACH oButton IN THIS.MyArray
oButton.FontBold = .T.
NEXT obutton
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j = j + 1
ENDFOR
****** FOR EACH - ENDFOR element ******
FOR EACH oButton IN THIS.MyArray
oButton.FontItalic = .T.
ENDFOR obutton
j = 1
****** EXIT ******
FOR EACH oButton IN THIS.MyArray
oButton.Caption = "test" + str(j)
j = j+1
IF j > 3
EXIT
ENDIF
NEXT
j = 1
****** LOOP ******
FOR EACH oButton IN THIS.MyArray
IF j > 3
LOOP
ENDIF
j = j + 1
oButton.Left = 25
NEXT
ENDPROC
ENDDEFINE