Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Where simple en Scrip

Hola a todos

Supongo que no es dificil, pero no encuentro la forma

Quiero limitar una carga en un Scrip, solo quiero que carge lo clientes que empiezan por CT

El campo Numero de cliente, es alfanumerico y es posible que sea por esa razon por la que no me funciona, ya que anteriormente me ha funcionado con limitaciones por fechas....       Where "Fecha Registro" >= '01/01/11'

En el Scrip añado... Where "Numero Cliente" = 'CT*' , pero me los carga TODOS los que empiezan por CT, por F, por C...

Tambien quiero limitar una carga a los Ticket de una compras realizadas con tarjeta, por lo que creia que podira utilizar, exist, de esta forma

Where Exist "Nº Targeta"

Ya que este campo esta en BLANCO, si el cliente compra al contado

Ninguno de los dos me funciona y no se si es por el tipo de campo ALFANUMERICO

¿Me podeis ayudar?

Gracias

1 Solution

Accepted Solutions
Miguel_Angel_Baeyens

Hola Luis,

Lo siguiente debería funcionar, independientemente de que los valores del campo sean numéricos o literales:

Tabla:

LOAD *

FROM Archivo.qvd (qvd)

WHERE Left("Numero Cliente", 2) = 'CT' // CT como dos primeros caracteres

AND Len("Nº Tarjeta"); // el campo tiene datos

El Left() funciona de forma similar a como lo hace en otros lenguajes. Len("Nº Tarjeta") devolverá verdadero si el valor es superior a cero (si el campo no está vacío). Existe la función IsNull() pero dependiendo del sistema operativo no entiende como "nulo" lo que debería. La función Len() devuelve cero si el valor del campo indicado no contiene ningún dato, que es lo que queremos.

Espero que te sirva.

Miguel

EDIT: Exists() hace referencia a un valor previamente cargado, por ejemplo

Empleados:

LOAD EmpleadoID,

     ClienteID

FROM Empleados.qvd (qvd);

Clientes:

LOAD *

FROM Clientes.qvd (qvd)

WHERE Exists(ClienteID);

cargará aquellos registros cuyo valor en ClienteID ya haya sido cargado previamente, aunque en el fichero QVD haya más registros.

View solution in original post

2 Replies
Miguel_Angel_Baeyens

Hola Luis,

Lo siguiente debería funcionar, independientemente de que los valores del campo sean numéricos o literales:

Tabla:

LOAD *

FROM Archivo.qvd (qvd)

WHERE Left("Numero Cliente", 2) = 'CT' // CT como dos primeros caracteres

AND Len("Nº Tarjeta"); // el campo tiene datos

El Left() funciona de forma similar a como lo hace en otros lenguajes. Len("Nº Tarjeta") devolverá verdadero si el valor es superior a cero (si el campo no está vacío). Existe la función IsNull() pero dependiendo del sistema operativo no entiende como "nulo" lo que debería. La función Len() devuelve cero si el valor del campo indicado no contiene ningún dato, que es lo que queremos.

Espero que te sirva.

Miguel

EDIT: Exists() hace referencia a un valor previamente cargado, por ejemplo

Empleados:

LOAD EmpleadoID,

     ClienteID

FROM Empleados.qvd (qvd);

Clientes:

LOAD *

FROM Clientes.qvd (qvd)

WHERE Exists(ClienteID);

cargará aquellos registros cuyo valor en ClienteID ya haya sido cargado previamente, aunque en el fichero QVD haya más registros.

Not applicable
Author

Mil gracias Miguel Angel

Tanto el Where Left, como el Len, han fucionado a la primera

Haceis las cosas faciles

Un millon de gracias