Amigos,
Solicito sus apoyo para hallar un query para mayorizar (sumarizar por nivel de cuentas) tengo una rutina(s) pero no utlizan sentencias SQL , quedo a la espera de su apoyo
Gracias
Willy
Gracias por tu respuesta el archivo de salida seria la acumulacion por nivel de cuentas segun los movimientos
Copio la estructura del plan de cuentas ,
Cuenta Descripcion
Nivel
1 Activo
Corriente 1
10 Caja Bancos
2
101 Caja
3
10101 Caja sede 1
5
104 Bancos Cta Cte.
3
10401 Bancos
4
1040101 Cta. Corriente MN 7
La tabla de movimientos es :
Cuenta , debe_haber , importe, periodo, ejercicio
10101 D 500 10 12
Gracias voy a probar
Willy
Fox Reloaded:
Creo entender de lo que dices, es que necesitas una función que tome el cursor generado por la función SQLEXEC() y te lo convierta en un cursor con el formato más comúnmente usado en los cursores de VFP, por ejemplo donde un campo fecha tenga una fecha vacía y no un NULL.
A continuación te paso una función que hace exactamente eso:
*---------------------------------------------------------------------------*
* NAME: CursorFormatVFP *
*---------------------------------------------------------------------------*
* Convierte campos cursor a formato mas utilizado en Cursores VFP *
* Si Campos son Null son convertido a Default VFP *
* Si Campos son DataTime son convertidos a Date *
* Si Campos Date tienen fecha 01/01/1900 son convertidos a Fecha Vacia *
*---------------------------------------------------------------------------*
* PARAMETERS: *
* tcCursor: Nombre Cursor a Procesar *
*---------------------------------------------------------------------------*
Lparameters tcCursor as string
local lcString as string ,;
niCount as integer ,;
lnTotal as integer ,;
lcField as string ,;
lnDecs as string ,;
lcType as string
*-- Creo un array con los campos del Cursor Pasado
lnTotal = afields(laFields, tcCursor)
select (tcCursor)
*-- String que contiene la instruccion SQL con la cual actualizo el cursor
lcString = "select "
for niCount = 1 to lnTotal
lcField = lower(laFields[niCount, 1])
lcType = upper(laFields[niCount, 2])
lnDecs = laFields[niCount, 4]
do case
case inlist(lcType, "C", "V", "M", "Q")
lcString = lcString + "nvl(" + lcField + ", '') as " + lcField + ", "
case inlist(lcType, "B", "I", "N", "F", "Y")
lcString = lcString + "nvl(" + lcField + ", " + str(0, (lnDecs + 2), lnDecs) + ") as " + lcField + ", "
case lcType == "L"
lcString = lcString + "nvl(" + lcField + ", .f.) as " + lcField + ", "
case lcType == "T"
lcString = lcString + "iif(year(" + lcField + ") = 1900, {}, nvl(cast(" + lcField ;
+ " as D), {})) as " + lcField + ", "
otherwise
lcString = lcString + lcField + ", "
endcase
next
*-- Quitarle la coma del final al string
if right(lcString, 2) = ", "
lcString = left(lcString, len(lcString) - 2)
endif
*-- Completo la instruccion SQL para actualizar el cursor
lcString = lcString + " from " + tcCursor + " into cursor " + tcCursor + " readwrite"
*-- Actualizo el cursor
&lcString
return
Carlos A. Gallardo
GCA-Soft - Tecnología Informática
Villa María - Córdoba - Argentina