Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Resultado no esperado con el uso de variables en el script

Hola a tod@s,

Le he dado vuelta a este segmento de código y no encuentro dónde está el error (talvez error de sintaxis).

LET vfecha_carga = Date('2013/01/07', 'YYYY/MM/DD');

TRACE $(vfecha_carga);



Operaciones:
LOAD Distinct
     @3 as [Número crédito],
    
@4 as [Tipo operación],
     @6 as [Monto bruto],
     @8 as [Saldo capital],
     Date(@15, 'YYYY/MM/DD') as [Fecha emisión],
     Date(@25, 'YYYY/MM/DD') as [Fecha vencimiento operacion],

     $(vfecha_carga) as [Fecha carga operaciones]

FROM
C:\Operaciones01_04_2013.txt
//************** OJO: HAY QUE CAMBIAR EL NOMBRE DE ARCHIVO *****************************
(txt, codepage is 1252, no labels, delimiter is '\t', msq);

La sentencia TRACE $(vfecha_carga)  si me despliega el valor que espero '2013/01/07', sin embargo el valor que se pone en [Fecha carga operaciones] es 287.57142857143 !!!... NO SÉ POR QUÉ SUCEDE ESTO!!, ¿¡estoy usando mal la variable vfecha_carga!?

... probé cambiando en la sentencia LOAD la variable por la función y funciona!!

Operaciones:

LOAD Distinct
     @3 as [Número crédito],
    
@4 as [Tipo operación],
     @6 as [Monto bruto],
     @8 as [Saldo capital],
     Date(@15, 'YYYY/MM/DD') as [Fecha emisión],
     Date(@25, 'YYYY/MM/DD') as [Fecha vencimiento operacion],

     Date('2013/01/07', 'YYYY/MM/DD') as [Fecha carga operaciones]

FROM
C:\Operaciones01_04_2013.txt
//************** OJO: HAY QUE CAMBIAR EL NOMBRE DE ARCHIVO *****************************
(txt, codepage is 1252, no labels, delimiter is '\t', msq);

Por favor, si me pueden dar luces de qué estoy haciendo mal.

Saludos,

Hugo

1 Solution

Accepted Solutions
danielrozental
Master II
Master II

Hugo

Esto no produce una fecha

LET vfecha_carga = Date('2013/01/07', 'YYYY/MM/DD')

Hay que usar makedate

LET vfecha_carga = Date(makedate(2013,1,7), 'YYYY/MM/DD')

Después en el LOAD conviene utilizar comillas simples.

'$(vfecha_carga)' as [Fecha carga operaciones]


View solution in original post

5 Replies
Not applicable
Author

Hola Hugo,

es tambien actual ese problema?

Los load operaciones poner valores diferentes?

Que son los valores?

Quantos líneas son cargar?  ?cargarido? Oh mi espanol!

Saludos

Klaus

Not applicable
Author

Hi Klaus,

The problem is actual and I don´t understand why it is... ... maybe it is syntax or format

valores = values

LET vfecha_carga = Date('2013/01/07', 'YYYY/MM/DD');    this line is ok, well I think that because  "TRACE $(vfecha_carga);"   show me the correct value, but in the sentence LOAD the value is another!!

If you have any idea, please... help me.

Thanks,

Hugo

My grammar isn´t good, but I hope "to be" understandable

Not applicable
Author

Hi Hugo,

I wanted to know how the values are. Should have written "Como son los valores" instead 🙂

Por favor demes los tables de ambas loads.

De nada hasta ahora

Klaus

danielrozental
Master II
Master II

Hugo

Esto no produce una fecha

LET vfecha_carga = Date('2013/01/07', 'YYYY/MM/DD')

Hay que usar makedate

LET vfecha_carga = Date(makedate(2013,1,7), 'YYYY/MM/DD')

Después en el LOAD conviene utilizar comillas simples.

'$(vfecha_carga)' as [Fecha carga operaciones]


Not applicable
Author

Gracias Daniel!!... lo dicho, tenía un error en la sintaxis!!

Te comento que había cambiado el formato de fecha ( SET DateFormat='YYYY/MM/DD'; ) para que acepte los formatos de los archivos que recibo y por ello si producía una fecha la sentencia LET... Date. Pero ahora me parece mucho mejor hacer uso de Date(Makedate(....))

Y de lo segundo, solo me hacía falta encerrar entre comillas simples '$(v_fecha_carga)'. Ahora comprendo que QV recibe el string pero al estar precedido por $ primero resuelve la variable.

Nuevamente gracias por el apoyo brindado.

Saludos,

Hugo