Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
ALERT: QlikView server communication interruptions following Microsoft Windows Domain Controller security updates
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Script no trabaja como debería

Saludos,

Tengo un script que ya no trabaja como hace unos días.

OLEDB CONNECT TO .......;

Cabeceras_Temp:

NoConcatenate

Load

[Codi_local]

           ,[Servicio]

      ,[Nume_docum]

      ,[Codi_clien]

      ,[Codi_emple]

      ,[Nume_perso]

      ,[Año]

            ,[Mes]

            ,date(Fech_docum,'MM/DD/YYYY') as [Fech_docum]

            ,[Semanas]

            ,[Periodos]

            ,[Año_periodo]

            ,[Weekpart]

            ,[Daypart]

            ,[Hora]

      ,[Tipo_pagos]

      ,[Tota_docum]

      ,[Dcto_docum]

      ,[Tiva_docum]

      ,[Tser_docum]

      ,[Reca_docum]

      ,[Cobr_docum]

      ,[Esta_docum]

      ,[Cant_promo]

      ,[Neto_docum]

;

SELECT [Codi_local]

           ,CASE WHEN codi_docum = 'R' THEN 'Restaurante' WHEN codi_docum IN ('L', 'S') THEN 'Llevar' WHEN codi_docum = 'E' THEN 'Express' WHEN codi_docum IN ('D', 'C') THEN 'Domicilio' END AS [Servicio]

      ,[Nume_docum]

      ,[Codi_clien]

      ,[Codi_emple]

      ,[Nume_perso]

      ,DATEPART(YEAR, Fech_docum) AS [Año]

            ,DATEPART(M, Fech_docum) AS [Mes]

            ,[Fech_docum]

            ,[Semanas]

            ,[Periodos]

            ,[Año_periodo]

            ,CASE WHEN DATENAME(DW, Fech_docum) IN ('Lunes', 'Martes', 'Miércoles', 'Jueves') THEN 'Weekday' ELSE 'Weekend' END AS [Weekpart]

            ,[Daypart]

            ,round([Hora_docum],0,1) as [Hora]

      ,[Tipo_pagos]

      ,[Tota_docum]

      ,[Dcto_docum]

      ,[Tiva_docum]

      ,[Tser_docum]

      ,[Reca_docum]

      ,[Cobr_docum]

      ,[Esta_docum]

      ,[Cant_promo]

      ,[Neto_docum]

  FROM [Sodetur_PH_BI].[Express].[Moc_docu]

JOIN  [REPORTES].Parametros_daypart AS parametros

ON ( (round(hora_docum,0,1) between parametros.HORA_INI AND parametros.HORA_FIN))

JOIN  Reportes.Parametros_periodos periodos

on ( Fech_docum between periodos.fecha_inicio AND periodos.fecha_fin)

where codi_docum in('S','L','E','D','C','R')

  and Esta_docum='C' and Fech_docum > $(vUltFecha);

Lo raro es que cuando borro "and Fech_docum > $(vUltFecha)" el scritp corre, pero necesito el filtro. En el modo debug tomo el script con la fecha reemplazada en lugar de la variable y lo ejecuto en sql server y si devuelve datos, luego reemplazo la variable por '07/24/2013', y en qlikview aun no me devuelve nada, es como si saltara la parte del select cuando pongo Fech_docum, pero no me da ningun aviso, ni tira errores en el log.

No tengo idea de que esta mal o que sucede. Alguien alguna sugerencia?

Gracias,

Santiago.

Labels (1)
4 Replies
Miguel_Angel_Baeyens

Hola Santiago,

Si la fecha contenida en la variable tiene la forma DD/MM/YYYY entonces debería estar entrecomillada, para que el servidor SQL entienda que es una cadena de texto. De lo contrario, podría evaluarse la cadena, devolver 0 (es decir, 7 dividido por 24 dividido por 2013) y por tanto ejecutarse, pero devolviendo todos los registros.

Deja la línea así:

and Esta_docum='C' and Fech_docum > '$(vUltFecha)';

Un saludo,

Miguel

P.D.: Como el caso está en español, te recomendaría moverlo al grupo QlikView en Español

Not applicable
Author

Las variable es ya una fecha en formato '07/24/2013', sin embargo cambie para que sea del tipo '24/07/2013' y ya se ejecuto. Aun no me queda claro pòrque el modo debbug me muestra la fecha en el primer formato y el sql server si lo ejecuta, pero qlikview no. Creia, que no estoy seguro la verdad, que qlikview solo pasaría ese query al sql server.

Ayudame con el link, porque solo encuentro esta comunidad.

Gracias por responder.

Santiago.

Miguel_Angel_Baeyens

Hola Santiago,

La razón por la cual te muestra la fecha en el primer formato puede ser porque, en la primera pestaña de tu script, lo tienes así definido, según tu sistema operativo. En la primera pestaña de tu script, en la parte superior, siempre vienen unas variables de entorno por defecto que toman los valores de tu sistema operativo.

Por otra parte, QlikView primero interpreta lo que entiende, en este caso la variable, y después envía la query al driver, de lo contrario, SQL recibiría "$(vUltFecha)" que no sería una palabra permitida en SQL, sino que lo que interesa es su contenido.

Espero que te sirva.

Miguel

Not applicable
Author

Precisamente por eso creería que lo que te muestra en el log del modo debug es lo que se envia al driver, como te digo, en el modo debug me muestra ya hecho el reemplazo de la variable, Fech_docum > '07/24/2013'

Que el sql server si me ejecuta y por eso no te guía hacía el error que si esta en el formato de la fecha.

Quiero decir en sql server necesito poner las fechas en MM/DD/YYYY para hacer un select pero en qlikview tengo que enviarla como DD/MM/YYYY.

Lo que dices de las variables lo sé, por lo general las quito de mi script o modifico a como las necesite. En este caso no las tengo en el script.

Gracias de nuevo.