FoxPro/Visual FoxPro - Ayuda con Do while

   
Vista:

Ayuda con Do while

Publicado por Manuel Mazatl (10 intervenciones) el 21/11/2008 01:19:56
Tengo la siguiente tabla con los siguientes campos y datos de ejemplo:

tabla : ALMACEN

clave ... No_compra ... entrada ... salida... costo
1 ................. 1.............. 10 ...................... .. 2
1..................2...................15.............................4

Para las salidas tengo un FORM (formulario) que me pide en sus respectivas cajas de texto la clave y la cantidad de salida, quisiera que al grabarlo tomara los datos de la primera entrada con su respectivo costo, y que al agotarse la cantidad de esa entrada (en este caso 10) continuara con la siguiente entrada (15).

Ejemplo si doy salida 6 quedaria la tabla de la siguiente manera:

tabla : ALMACEN

clave ... No_compra ... entrada ... salida... costo
1 ................. 1.............. 10 ...................... .. 2
1..................2...................15.............................4
1...................1...................0..............6..............2

Y si doy salida a 12

tabla : ALMACEN

clave ... No_compra ... entrada ... salida... costo
1 ................. 1.............. 10 ...................... .. 2
1..................2...................15.............................4
1...................1...................0..............10............2
1 .................. 2...................0..............2..............4

y asi sucesivamente con las nuevas entradas y salidas:

Lo he intentado de varias manera pero todavia no me queda.
He creado una tabla "temporal" en la que vacio los datos que se van generando para posteriormente vaciarlos a la tabla definitiva pero no todavia no consigo el resultado.

Podrian apoyarme con algo de codigo que me algo de luz.
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:Ayuda con Do while

Publicado por ANDRES CORTEZ (162 intervenciones) el 21/11/2008 06:13:29
hola manuel

No entiendo tu pregunta

quieres de tu tabla almacen valla descontando ejemplo

si ingresas 12

clave ... No_compra ... entrada ... salida... saldo costo
1 ................. 1.............. 10 ............. 10. .. 0 2
1..................2................... 15................ 2.............13 4

que valla descontado de la compra mas antigua y si la cantidad de salida es mayor a esta compra seguir con la compra siguiente. ???


andres cortez
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:Ayuda con Do while

Publicado por kong (681 intervenciones) el 21/11/2008 19:18:48
si, aumenta un campo (saldo).
has un locate o scan para buscar el primer saldo >0 y has la resta. Si ese saldo no es suficiente, resta la diferencia del siguiente en la lista

facil!
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:Ayuda con Do while

Publicado por manuel mazatl (10 intervenciones) el 22/11/2008 04:00:47
Pues si, es lo que quisiera hacer.
He agregado tambien un campo de SALDO pero como que me falla la logica, porque no logro condicionarlo, para hacer lo que planteo.
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:Ayuda con Do while

Publicado por ANDRES CORTEZ (162 intervenciones) el 22/11/2008 18:50:15
HOLA MANUEL

hora si te entendi

En la base almacen agregale un campo saldo n(12,2) y cuando grabes la entrada grabala en el campo entrada y saldo

En la base temporal agregale un campo reccno n(10), cuando llenes esta tabla en este campo graba el numero de registro es decir el recno()

1) forma 1 trabajando con tabla temporla

sele a
use almacen
sele b
use temporla
go top
xcan=thisform.text1.value && es donde ingreso la cantidad de salida
do while !eof()
sele a
go temporal.reccno && va al registro de la tabla almacen
if xcan>a.saldo
xcan=xcan-saldo
replace saldo with 0
else
replace saldo with saldo-xcan
exit
endif
sele b
skip
endd

2) forma 2 trabajando direccto en la tabla almacen

sele a
use almacen
index on clave to aaa
xcan=thisform.text1.value && es donde ingreso la cantidad de salida
seek alltrim(thisform.text2.value) && texto supuesto donde ingresamos el campo clave
if foun()
do while !eof() .and. alltrim(thisform.text2.value)=alltrim(clave)
if xcan>a.saldo
xcan=xcan-saldo
replace saldo with 0
else
replace saldo with saldo-xcan
exit
endif
skip
endd

espero te sirva

ACM
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:Ayuda con Do while

Publicado por ANDRES CORTEZ M (162 intervenciones) el 22/11/2008 18:56:16
HOLA MANUEL

Una cosa se me escapo
debes validar que si la cantidad es mayor que saldo

para realizar el proceso

ACM
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