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]
