Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

seleccionar fecha null y calendario maestro.

Hola buenas tardes.

Soy nuevo en qlikview y estoy todavía muy verde.

Tengo varias tablas que leo a través de ODBC desde un SQL Server.

Una tabla es previsiones de clientes y otra previsiones de proveedores.

Un campo de la tabla de previsones de clientes es de tipo fecha y se llama cobro.

El mismo campo en la tabla de previsiones de proveedores se llama pago.

Cuando el campo cobro o pago es null significa que la factura no está cobrada o pagada.

Estoy utilizando en una tabla pivotante la exprresión:

Money(sum(if(IsNull(cobro),importe))) para los cobros y

Money(sum(if(IsNull(pago),importe))) para los pagos.

Esto no me funciona bien puesto que al hacer la consulta de facturas de clientes por fechas de vencimiento la primera vez que hago la selección el valor es correcto pero al seleccionar las facturas pendientes de pago el valor cambia y solo da bien el resultado de las facturas pendientes de pago.

Si vuelvo a borrar la consulta vuelve a funcionar.

Hay alguna otra manera de hacer esto?.

Por otro lado sería posible crear un calendario maestro para que al selecionar la fecha de vencimiento fuera la misma en una tabla que en otra?.

Ahora tengo un campo que se llama vencim

Year(vencim) as [Año_vencimiento] Month(vencim) as [Mes _vencimiento] para facturas de venta y

el campo vencim as vencimp

Year(vencim) as [Año_vencimiento_proveedor] Month(vencim) as [Mes _vencimiento_proveedor]

Muchas gracias por su tiempo.

Saludos

3 Replies
hector_munoz
Specialist
Specialist

Hola José,

Te cuento cómo lo haría yo, aunque lo mismo no es posible en tu modelo:

  • Crearía una tabla PREVISIONES con la información tanto de previsiones de clientes como de previsiones de proveedores.
  • Tendría un campo 'Tipo Previsión' con los valores '0' o 'C' para los registros de previsiones de clientes y con los valores '1' o 'P' para las previsiones de los proveedores.
  • En esta tabla tendría un campo 'Flag Factura Pendiente' que valdría 1 si la factura, ya sea de proveedor o de cliente, tiene la fecha nula, es decir, no se ha pagado.
  • Tendría un campo con la fecha en formato numérico (p.e. 42888 para le '02/06/2017). Esta fecha sería la fecha de vencimiento 'Fecha Vencimiento'.
  • Tendría una nueva tabla CALENDARIO_VENCIMIENTO con una clave de fecha en formato numérico y que se llamaría 'Fecha Vencimiento' que haría que esta tabla se uniese a PREVISIONES. En esta tabla de calendario crearía el resto de campos temporales que necesitase: mes, semana, año, trimestre, ...
  • Imagino que la tabla PREVISIONES tendría un campo 'ID Factura' que la permitiese unirse a una hipotética tabla FACTURAS a la que ya está asociada la información de proveedores, clientes y la del resto del modelo.


Con esto creo que tu modelo iría fino, fino... Al final yo suelo unir muchas tablas de 'naturaleza' similar en una misma precisamente para tener calendarios canónicos y simplificar el desarrollo de la parte de diseño.


Espero que te sirva.


Saludos,

H

Not applicable
Author

Hola buenas tardes.

Esta es la estructura de las tablas:

Estructura de tablas.png

Y este es el scrip:

LOAD

BANCO as CUENTA,

    cliente,

    cobro,

    emision,

    factura,

    importe,

    vencim,

    Year(vencim) as [Año_vencimiento], Month(vencim) as [Mes_vencimiento], Day(vencim) as [Dia_vencimiento];

  

SQL SELECT BANCO,

    cliente,

    cobro,

    emision,

    factura,

    importe,

    periodo,

    vencim

    FROM COMU0001.dbo."previ_cl";

  

LOAD CODIGO as cliente,

    NOMBRE;

SQL SELECT CODIGO,

    NOMBRE

FROM "2017VT".dbo.clientes;

LOAD banco as CUENTA,

    emision as emisionp,

    factura as facturap,

    importe as importep,

    pago,

    proveedor,

    vencim as vencimp,

    Year(vencim) as [Año_vencimientop], Month(vencim) as [Mes_vencimientop], Day(vencim) as [Dia_vencimientop];

  

SQL SELECT banco,

    emision,

    factura,

    importe,

    pago,

    proveedor,

    vencim

FROM COMU0001.dbo.previs;

LOAD CODIGO as CUENTA,

    NOMBRE as NBANCO;

SQL SELECT CODIGO,

    NOMBRE

FROM "2017VT".dbo.cuentas;

JOIN

LOAD CUENTA,

  DEBE,

  HABER;

  

SQL SELECT CUENTA,

  DEBE,

    HABER

FROM "2017VT".dbo.saldos;

LOAD CODIGO as proveedor,

    NOMBRE as Nproveedor;

SQL SELECT CODIGO,

    NOMBRE

FROM "2017VT".dbo.proveed;

Por favor me podrías indicar como se hace lo que me comentas?.

Habría otra forma de seleccionar los valores nulos de la fecha de cobro/pago?

Por ejemplo asignar un valor .

He visto un  SET NULLDISPLAY=<sym>; y también SET NULLDISPLAY=";

He hecho esto sum({$<cobro={sym}>} importe) pero no funciona.

Muchas gracias.

Saludos

Not applicable
Author

Hola de nuevo.

He puesto esto en el script:

SET NULLDISPLAY='PENDIENTE';

He creado esta expresión para previsiones de Proveedores:

sum({$<pago={PENDIENTE}>} importep)

Y esta para las previsiones de clientes:

sum({$<cobro={PENDIENTE}>} importe)

El resultado es el mismo que con los null

No entiendo porqué no funciona, los campos se llaman diferentes , son fecha diferentes también.

Cuando seleciono la primera pestaña en qlik que es previsiones de clientes es perfecto. Cuando paso a la pestaña de previsiones de proveedores, es correcto pero al volver a la pestaña de clientes ya no funciona. Se pierde lo pendiente hasta que borro la consulta