Porque no traes en un cursor todos los movimientos mas los campos que
necesites en cero. Y luego con un procedimiento los calculas en el cursor
de FOX, y si querés, luego podés recorrer ese cursor y volver a grabar en
MYSQL.

Sería: SELECT CODPROV, DEBITO, CREDITO, 0.00 AS SALDOANTERIOR , 0.00 AS
TOTDEB , 0.00 AS TOTCRE , 0.00 AS SALDOACTUAL FROM TablaMovimientos  ORDER
BY CODPROV

(No me quedó claro si la tabla de movimientos la traes de DBF)

Y luego, en este cursor lo tendrías que recorrer e ir calculando el
SALDOANTERIOR EL TOTDEB, TOTCRE y el SALDOACTUAL.

Saludos.





El 23 de noviembre de 2012 00:12, Sergio D.Castellari <
[email protected]> escribió:

> **
> **
> Hola gente,
>
> Nosé si el titulo del Asunto es exacto, pero la intención es ver si
> alguien con conocimientos en MySQL tiene alguna formula para resolver el
> siguiente problema:
> Tengo una tabla de Proveedores, donde tiene un campo que indica el Saldo
> Actual del mismo y otra tabla que va registrando los movimientos de los
> mismos, con un formato de registro parecido a este:
> CODPROV, DEBITO, CREDITO, SALDOANTERIOR , TOTDEB , TOTCRE , SALDOACTUAL entre
> otros campos...
>
> La cuestion es la siguiente (es una migracion de un programa clipper/DBFs)
> que en un procedimiento, REVISO toda la tabla de movimientos y voy
> ACTUALIZANDO los campos SALDOANTERIOR , TOTDEB , TOTCRE , SALDOACTUAL
> registro a registro, por cada Proveedor segun las operaciones de Debitos y
> Creditos.
> Al final del procedimiento, me queda en la tabla de Proveedores los Saldos
> Actuales, y en la tabla de movimientos todos los registros AJUSTADOS
> registro a registro con dichos campos como muestro a continuación...
>
> DEBITO    CREDITO    SALDOANTERIOR    TOTDEB    TOTCRE    SALDOACTUAL
> 0.00      1264.45    0.00             0.00      1264.45   -1264.45
> 1264.45   0.00       -1264.45         1264.45   0.00      0.00
> 0.00      641.42     0.00             0.00      641.42    -641.42
> 3.40      0.00       -641.42          3.40      0.00      -638.02
> 638.02    0.00       -638.02          638.02    0.00      0.00
>
> Los ultimos 4 campos son los que se ajustan registro a registro según los
> valores de los campos Debito y Credito.
>
> Actualmente tengo hecho un procedimiento que realiza este trabajo
> correctamente...peeeero...tarda muuucho tiempo, creo que principalmente por
> que hago un query por cada 2 registros, de tal forma que si la tabla tiene
> 60000 registros, hago 30000 querys!!!!
>
>     If cTipoComp="FA" .or. cTipoComp="CI"
>      cQuery:="Update MOVIPROV Set TOTCRE="+AllTrim(cCredito)+","
>      nSalAct:=nSalAnt - Val(cCredito)
>      nSalAnt:=nSalAct
>      cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where
> IDMOVIPROV="+cID
>     ElseIf cTipoComp="RE" .or. cTipoComp="NC"
>      cQuery:="Update MOVIPROV Set TOTDEB="+AllTrim(cDebito)+","
>       nSalAct:=nSalAnt + Val(cDebito)
>       nSalAnt:=nSalAct
>      cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where
> IDMOVIPROV="+cID
>     ElseIf cTipoComp="AP" .and. nSaldo <> 0   //Comprobante 'Anticipo' y
> todavia NO aplicado
>      cQuery:="Update MOVIPROV Set TOTDEB="+AllTrim(cDebito)+","
>       nSalAct:= nSalAnt + Val(cDebito)
>       nSalAnt:=nSalAct
>      cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where
> IDMOVIPROV="+cID
> *¿¿¿ Existe algun metodo de MySQL, para que haga este proceso en un solo
> query o eventualmente un query por cada proveedor ???*
> *¿¿¿ Existe alguna manera de poder concatenar multiples Updates, en un
> solo query ???*
> **
> Desde ya muchas gracias si alguien puede aportarme algo de luz...bah...una
> lampara gigante!!!
>
> Saludos,
> Sergio Castellari
> **
>



-- 
[email protected]

Responder a