Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

VT -Listado Mayor Saldo en Cta Cte


Se desea, para un rango de clientes, saber por cada uno cual fue el mayor saldo registrado en cta cte para un periodo dado.

La solución:

  • Una función del tipo tabla que, dado el cliente y la fecha desde-hasta, devuelve el saldo diario entre esas fechas
  • Un reporte basado en el maestro de clientes, con un campo calculado que consulta a esa función y devuelve un string concatenando la fecha y el saldo buscado
  • dos campos calculados: fecha-saldo, que extraen la información del campo anterior

Función:



CREATE FUNCTION VT_TablaSaldos

 (@nrocta varchar(13),@fchdesde datetime, @fchhasta datetime)RETURNS @SaldosVT TABLE

 ( NROCTA VARCHAR(13),

  FCHMOV DATETIME,

  SALDOVT NUMERIC(18,2))

-- Devuelve una Tabla con el SALDO en Cuenta Corriente para una Nrocta dada

-- Desarrollo Carlos Pedranti

-- Última Modificación 30-05-2007

-- Ej: Devuelve el mayor saldo de la cta entre fechas

--

--SELECT TOP 1 *

--FROM DBO.VT_TablaSaldos('APL000011','20070101','20070505')

--order by SALDOVT DESC,FCHMOV DESC

AS

BEGIN

DECLARE @FECHA DATETIME,

 	@SALDO NUMERIC(18,2)

 SELECT @FECHA = @fchdesde

WHILE @FECHA <= @fchhasta

 BEGIN

 	SELECT @SALDO = ISNULL(SUM(VTRMVC_IMPNAC),0)

 	FROM VTRMVC

 	WHERE VTRMVC_FCHMOV <= @FECHA

 	AND VTRMVC_NROCTA = @NROCTA

INSERT INTO @SaldosVT

 	( fchmov,nrocta,saldovt)

 	SELECT @FECHA,@NROCTA,@SALDO

 	SELECT @FECHA = DATEADD(DAY,1,@FECHA)

 END

 RETURN

END

Reporte:

Campo calculado DATOS:


NROCTA = ACTUALREG("VTMCLH_NROCTA")
FDESDE = parameters("fechadesde").valuefrom
FHASTA = parameters("fechahasta").valuefrom
SSQL = ""
SSQL = SSQL & " SELECT TOP 1 CONVERT(VARCHAR,FCHMOV ,103)+CAST(SALDOVT AS VARCHAR(40)) "
SSQL = SSQL & " FROM DBO.VT_TablaSaldos('" &NROCTA & "' ,"
SSQL = SSQL & " '" &FDESDE & "'  , "
SSQL = SSQL & " '" &FHASTA & "'  ) "
SSQL = SSQL & "  order by SALDOVT DESC,FCHMOV DESC "

RESULT = QUERYEXEC(CSTR(SSQL))

Campo Calculado FECHA:



DATO = ACTUALREG("DATOS")

RESULT = MID(DATO,1,10)

CAMPO CALCULADO SALDO:


DATO = ACTUALREG("DATOS")

RESULT = CDBL(MID(DATO,11,30))

mayo 30, 2007 - Posted by | 1. SotLand Logic, 1.2 ReportManager, Cwa Logic

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: