Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
jorge_redondo
Contributor III
Contributor III

Crear varios QVD a partir de uno

Hola!

Tengo cargada en memoria una tabla cuya fuente de datos es un XLS que aglutina movimientos bancarios de varias cuentas y varias empresas. Algo tal que así:

QlikView - Copia de Partner - [CQlikviewAPP MovimientosResumen Movimientos.png

Dicho XLS me llega sin una columna de SALDO, la cuál deso incorporar volcando la tabla y dividiéndola a su vez en tantas tablas como cuentas distintas haya (en la captura se podrían apreciar 2 tablas distintas, hay una sociedad con dos bancos). Como cuento con el saldo nicial a fecha 1/enero de cada una de las cuentas, podría llevar ese saldo a las tablas finales, pero no sé cómo hacerlo

Mi scrpit lo tengo así:

Movimientos:

LOAD

     EMP,

     BCO,

     #,

     Day(Fecha) as Día,

     Fecha as Fecha,

     Month(Fecha) as MovMes,

     Valor,

     Concepto,

     Num#(Importe,'#') as Importe,

     Cuenta,

     Referencia,

     Grupo

FROM

(biff, embedded labels, table is Listado$);

// Luego exporto la tabla en dos ficheros, un QVD y otro CSV

for i = 0 to NoOfTables()-1

     LET Nombre_Tabla = TableName(i);

     Store $(Nombre_Tabla) into C:\Users\Central\Google Drive\QVD\$(Nombre_Tabla).qvd;

     Store $(Nombre_Tabla) into C:\Users\Central\Google Drive\QVD\$(Nombre_Tabla).csv (txt, delimiter is ';');

next; 

Como digo, tendría que leer la tabla (ya está ordenada y lista para una lectura secuencial), ir acumulando el saldo y almacenar por cada ruptura en empresa/cuenta en un QVD separado.

¿Alguna orientación?

Muchas gracias!

1 Solution

Accepted Solutions
alexis_garcia
Creator II
Creator II

Hola Jorge,

Una de las formas de hacerlo es la siguiente:

Lees la tabla tantas veces como QVDs vas a querer, filtrando en el WHERE por cada banco y así tendrás un QVD por cada uno de ellos.

TABLA1:

LOAD

     EMP,

     BCO,

     #,

     Day(Fecha) as Día,

     Fecha as Fecha,

     Month(Fecha) as MovMes,

     Valor,

     Concepto,

     Num#(Importe,'#') as Importe,

     Cuenta,

     Referencia,

     Grupo

FROM

(biff, embedded labels, table is Listado$)

WHERE BCO = '1';

STORE TABLA1 INTO BANCO1.qvd;

BANCO2:

LOAD

     EMP,

     BCO,

     #,

     Day(Fecha) as Día,

     Fecha as Fecha,

     Month(Fecha) as MovMes,

     Valor,

     Concepto,

     Num#(Importe,'#') as Importe,

     Cuenta,

     Referencia,

     Grupo

FROM

(biff, embedded labels, table is Listado$)

WHERE BCO = '2';

STORE TABLA2 INTO BANCO2.qvd;

Y así sucesivamente, con todos los bancos que tengas.

Al llamarse los campos igual, se creará una única tabla, pero tendrás tantos QVDs como bancos.

Revisa la sintaxis porque lo he hecho a ojo, pero la idea es esa.

Saludos.

View solution in original post

6 Replies
alexis_garcia
Creator II
Creator II

Hola Jorge,

Una de las formas de hacerlo es la siguiente:

Lees la tabla tantas veces como QVDs vas a querer, filtrando en el WHERE por cada banco y así tendrás un QVD por cada uno de ellos.

TABLA1:

LOAD

     EMP,

     BCO,

     #,

     Day(Fecha) as Día,

     Fecha as Fecha,

     Month(Fecha) as MovMes,

     Valor,

     Concepto,

     Num#(Importe,'#') as Importe,

     Cuenta,

     Referencia,

     Grupo

FROM

(biff, embedded labels, table is Listado$)

WHERE BCO = '1';

STORE TABLA1 INTO BANCO1.qvd;

BANCO2:

LOAD

     EMP,

     BCO,

     #,

     Day(Fecha) as Día,

     Fecha as Fecha,

     Month(Fecha) as MovMes,

     Valor,

     Concepto,

     Num#(Importe,'#') as Importe,

     Cuenta,

     Referencia,

     Grupo

FROM

(biff, embedded labels, table is Listado$)

WHERE BCO = '2';

STORE TABLA2 INTO BANCO2.qvd;

Y así sucesivamente, con todos los bancos que tengas.

Al llamarse los campos igual, se creará una única tabla, pero tendrás tantos QVDs como bancos.

Revisa la sintaxis porque lo he hecho a ojo, pero la idea es esa.

Saludos.

jorge_redondo
Contributor III
Contributor III
Author

Gracias Alexis! era justo lo que necesitaba. Me estaba complicando la vida y resulta que era más fácil de lo que pensaba.

jorge_redondo
Contributor III
Contributor III
Author

Una vez separadas las tablas he introducido en cada una de las cargas

if( recno()=1,

         numsum($(vSaldoIncialBanco_Cuenta),

             numsum(Importe,PEEK('Saldo'))) as Saldo,

Mostrando el saldo de cada una de ellas.

jorge_redondo
Contributor III
Contributor III
Author

Me haré una autocorrección. No es recno() la función a emplear, ya que eso sólo valdría para un sólo fichero (una cuenta de una empresa). He empleado rowno() y ahora sí calcula bien los acumulados.

alexis_garcia
Creator II
Creator II

Hola Jorge,

Me alegro que lo hayas podido solucionar.

Saludos.

alexis_garcia
Creator II
Creator II

Hola Jorge,

Cuando puedas marca la respuesta como correcta si has podido solucionar el problema.

Saludos.