FoxPro/Visual FoxPro - problema en busqueda y reemplazo

   
Vista:

problema en busqueda y reemplazo

Publicado por Rafa (21 intervenciones) el 01/06/2010 17:11:22
Hola que tal jeje tengo un problema en un formulario que acabo de implementar en un sistemita, en este formulario solo tengo un boton que dice "Procesar Datos", bueno la funcion que quiero que realice es la siguiente:

- Tengo dos tablas, facturas y adeudos.
El cual la de facturas pues almacena todos los folios, fechas, clientes, totales, etc y UN CAMPO "ACTIVO". para que este en .F. o en .T., eso lo proceso de forma normal.

La tabla ADEUDOS es para saber si la factura esta pagada o si aun se debe y contiene tres campos, el folio (FACT) que almacena el numero de folio de factura, otro campo llamado ADEUDO y otro campo ABONOS.

Mi problema es que como tengo bastantes registros capturados en FACTURAS le acabo de agregar un campo de tipo ACTIVO y pues para no andar viendo uno por uno y comparando si ya esta pagada la factura y ponerle en .T. o .F., diseñe este formulario para que con un solo click se ponga en .T. o .F. segun la comparacion. Este es mi codigo:

sele adeu
scan

sele fac
scan

if fac.folio = adeu.fact and (adeu.adeudo-adeu.abonos=<0) and adeu.tipo = "Productos"
repl activo with .f.
else
repl activo with .t.
endif

ends

ends

messagebox("Proceso Terminado.",4+32+40,"MSG")

La manera de saber si esta pagada es preguntar si adeudo menos abonos es igual o menor a 0 y ya que ponga en .F. la pagada, pero si es mayor a 0 que ponga .T.

De tanto alboroto haber si me supe explicar jejejeje, creo k la mejor solucion es usar unas lineas de SQL, pero nomas no me sale, alguien me podria hechar la mano ??
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
Imágen de perfil de Mauricio

problema en busqueda y reemplazo

Publicado por Mauricio (1368 intervenciones) el 01/06/2010 18:47:40
Rafael, puedes usar un prg en lugar del boton procesar datos, asi:
*
*Puedes usar un PRG:
CLOSE TABLE ALL
USE factura IN 0 ORDER folios
USE adeudo IN 0 ORDER folio
*
public vdeuda, vfolio, vsuma
*
SELE factura
*
SCAN && Barrer tabla FACTURA para actualiza campo ACTIVO
vfolio = folios && de factura
STORE 0 TO vdeuda, vsuma = 0 && inicializamos contador de acumulado de deuda
*
SELE adeudo && Posicionar en tabla a buscar
IF SEEK(vfolio) && se hallo folio de factura en adeudo
vdeuda = adeudo && se supone que esta es la deuda
SCAN WHILE folio = vfolio && Barrer adeudo por folio para saber la deuda de un folio
vsuma = vsuma + abonos && acumular los abonos de este folio
ENDSCAN
IF vsuma = vdeuda && deuda cancelada, se pone falso
REPLA factura.activo with .f.
ELSE && deuda no cancelada, se pone thru
REPLA factura.activo with .T.
ENDIF
ELSE && no tiene abono por lo tanto se pone en falso
REPLA factura.activo with .f.
ENDIF
SELE factura && nos posicionamos de nuevo en factua
ENDSCAN
CLOSE TABLE 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

RE:problema en busqueda y reemplazo

Publicado por Rafa (21 intervenciones) el 01/06/2010 19:56:46
Hola que tal, jeje listo si funciono, nada mas que le hice unos ajustes para que quede conforme yo queria, pero si tu codigo me ayudo bastante. Gracias amigo.

Hasta luego.
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