Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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.
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.
Mil gracias Miguel Angel
Tanto el Where Left, como el Len, han fucionado a la primera
Haceis las cosas faciles
Un millon de gracias