FoxPro/Visual FoxPro - Acortar mi codigo con algun update where

   
Vista:

Acortar mi codigo con algun update where

Publicado por es_binario (757 intervenciones) el 16/11/2009 18:42:35
Tengo una tabla donde guardo la captura de los abonos de unas tarjetas de cobro, bueno, todo bien, voy agregando a esta tabla todos los folios banados, asi como su abono, pero tengo una tabla ventas, en donde actualizo El saldo Actual, El saldo Anterior y El ultimo pago, solo que no lo hago con cada registro que gravo, para esto creo un cursor a partir de una consulta sql de la tabla ventas, y le doy el readwrite para ahi en ese cursor guardar los cambios, el caso es que al final el usuario tiene un boton que finaliza el proceso de recepcion de tarjetas para cada cobrador, entonces lo que hago es leer toda la tabla para actualizar la tabla original llamada venta, a partir de la tabla venta_b. les pongo el codigo.

La pregunta, no podria hacerlo mas corto el codigo con alguna instruccion sql.

De antemano gracias.

DO case
CASE This.Caption = "Comenzar"
this.BackColor = RGB(255,0,0)
This.Caption = "Terminar"
Thisformset.form1.txtPago.Enabled = .T.
Thisformset.form1.cmbCobrador.Enabled = .t.
Thisformset.form1.txtfecha.Enabled = .t.
thisformset.form1.txtFolio.Enabled = .t.
thisformset.form1.txtFolio.SetFocus

CASE This.Caption = "Terminar"
LOCAL cobrador
STORE ALLTRIM(thisformset.form1.CmbCobrador.Value) TO cobrador
*// seguro
msgboxseg = MESSAGEBOX("Seguro de recibir este cobro a: " + cobrador,4+32+256,"Desea continuar recibiendo el cobro")

IF msgboxseg = 6 && es un si
*// acepta el cobro como normal
UPDATE abonos SET tipo = "A" WHERE tipo = "t"

this.BackColor = RGB(0,64,0)
This.Caption = "Comenzar"
Thisformset.form1.txtPago.Enabled = .F.
Thisformset.form1.cmbCobrador.Enabled = .F.
Thisformset.form1.txtfecha.Enabled = .F.
thisformset.form1.txtFolio.Enabled = .F.
*// llama al guardado de los abonos

SELECT * FROM venta_b ;
WHERE venta_b.folio in (SELECT folio FROM abonos WHERE abonos.tipo = "t");
INTO CURSOR Mis_cambios_en_ventas
WAIT "Espere..." nowait
SELECT Mis_cambios_en_ventas
LOCAL cambi_os
STORE RECCOUNT() TO cambi_os
*// solo si tiene registros
LOCAL sal_ant, sal_act, ult_pagoo, fol_update
IF RECCOUNT() > 0
FOR ve = 1 TO RECCOUNT()
SELECT Mis_cambios_en_ventas
GO ve
STORE Mis_cambios_en_ventas.folio TO fol_update
STORE Mis_cambios_en_ventas.saldo_act TO sal_act
STORE Mis_cambios_en_ventas.saldo_ant TO sal_ant
STORE Mis_cambios_en_ventas.ult_pago TO ult_pagoo
UPDATE venta SET venta.saldo_act = sal_act, venta.saldo_ant = sal_ant, ;
venta.ult_pago = ult_pagoo WHERE venta.folio = fol_update
ENDFOR
ENDIF

*// termina
MESSAGEBOX("Se han actualizado correctamente " + ALLTRIM(STR(cambi_os)) + " Registros Exitosamente",64,"")
RETURN
ELSE && desea revisar o cambiar al vendedor
RETURN
ENDIF
ENDCASE
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:Acortar mi codigo con algun update where

Publicado por Saul (676 intervenciones) el 17/11/2009 22:48:26
** TODA ESTA PARTE
** CAMBIALA POR ESTA
SELECT * FROM venta_b ;
WHERE venta_b.folio in (SELECT folio FROM abonos WHERE abonos.tipo = "t");
INTO CURSOR Mis_cambios_en_ventas
WAIT "Espere..." nowait
SELECT Mis_cambios_en_ventas
LOCAL cambi_os
STORE RECCOUNT() TO cambi_os
*// solo si tiene registros
LOCAL sal_ant, sal_act, ult_pagoo, fol_update
IF RECCOUNT() > 0
FOR ve = 1 TO RECCOUNT()
SELECT Mis_cambios_en_ventas
GO ve
STORE Mis_cambios_en_ventas.folio TO fol_update
STORE Mis_cambios_en_ventas.saldo_act TO sal_act
STORE Mis_cambios_en_ventas.saldo_ant TO sal_ant
STORE Mis_cambios_en_ventas.ult_pago TO ult_pagoo
UPDATE venta SET venta.saldo_act = sal_act, venta.saldo_ant = sal_ant, ;
venta.ult_pago = ult_pagoo WHERE venta.folio = fol_update
ENDFOR
ENDIF
*********************************

** esto tendira que funcionar
UPDATE venta SET;
venta.saldo_act = a.sal_act,;
venta.saldo_ant = a.sal_ant, ;
venta.ult_pago = a.ult_pagoo ;
SELECT a.saldo_act,a.saldo_ant,a.ult_pago;
FROM venta_b a ;
WHERE venta_b.folio in (SELECT folio FROM abonos WHERE abonos.tipo = "t")
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:Acortar mi codigo con algun update where

Publicado por MONIKA MERCEDES (1 intervención) el 12/05/2010 01:20:07
AYUDEMEN CON EL UPDATE NO ME SIRVE DE NINGUNA JORMA ........... AYUEME POR JAVOR
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