Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Comparar fechas desde Variables

Hola amigos/as, tengo un problema a la hora de comparar en variables las fechas  de modificación de ficheros. Por la razón que sea, dos fechas iguales me indica que son distintas. Os pongo un el ejemplo, y me aseguro de que ambas fechas sean las mismas.

Update_excell:

Load Date, filetime() as X from (ooxml, embedded labels, table is Sheet1);
LET v_actual_UpdateXLS =round(Peek('X',0,'Update_excell'));

Ahora esa misma fecha la guardo en QVD:

STORE X from Update_excell  into ;

DROP Table Update_excell ;

Y nuevamente, vuelvo a sacar la fecha y la guardo en otra variable:

old_Update_excell:

LOAD X FROM ;

(qvd);
LET v_old_UpdateXLS =round(Peek('X',0,'old_Update_excell'));
DROP Table old_Update_excell;

Al compararlos en el Script, siempre me dice que las fechas son distintas

IF '$v_old_UpdateXLS' = '$v_actual_UpdateXLS' then
//DROP Table TABLE_2;
set v_resultado ='iguales';
ELSE
//DROP Table TABLE_1;
set v_resultado ='diferentes';
ENDIF

¿Alguna idea de que puede estar ocurriendo?

Gracias por adelantado amigos/as.

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Hola Francisco,

Estás escribiendo mal las variables en el script, estás comparando los nombres de las variables y no los contenidos de las variables.

Con fechas es mejor ponerlas entrecomillas, ya que pueden contener espacios y caracteres especiales que harán que te falle tu script si no las entrecomillas:

Update_excell:

LOAD Date , filetime() as X FROM (ooxml, embedded labels, table is Sheet1);

LET v_actual_UpdateXLS =Peek('X',0,'Update_excell');

STORE X from Update_excell  into ;

DROP Table Update_excell ;

old_Update_excell:

LOAD X FROM (qvd);

LET v_old_UpdateXLS =Peek('X',0,'old_Update_excell');

DROP Table old_Update_excell;

IF '$(v_old_UpdateXLS)' = '$(v_actual_UpdateXLS)' then //TE FALTAN AQUÍ LOS PARÉNTESIS PARA QUE QV SEPA QUE TIENE QUE DEVOLVER EL VALOR DE UNA VARIABLE

//DROP Table TABLE_2;

set v_resultado ='iguales';

ELSE

//DROP Table TABLE_1;

set v_resultado ='diferentes';

ENDIF

Un Saludo!!!

View solution in original post

9 Replies
agomes1971
Specialist II
Specialist II

Hola,

es que se puede adjuntar un ejemplo?

Gracias

André Gomes

Not applicable
Author

Hola André, disculpa olvidé adjuntarlo. Aquí lo tienes.

Gracias nuevamente.

millan123
Creator II
Creator II

Could you please brief me in English...

santiago_respane
Specialist
Specialist

Hola Francisco,

Esto se debe a un error de sintaxis a la hora de evaluar variables.

Para evaluar una variable con el símbolo $ debes usar la siguiente sintaxis: '$(MiVariable)'.

Por eso esta linea siempre retorna false, estas comparando dos cadenas de texto:

IF '$v_old_UpdateXLS' = '$v_actual_UpdateXLS' then

Para este caso yo usaría los nombres de variables tal como están, como a continuación:

IF v_old_UpdateXLS = v_actual_UpdateXLS then

//DROP Table TABLE_2;

set v_resultado ='iguales';

ELSE

//DROP Table TABLE_1;

set v_resultado ='diferentes';

ENDIF

Espero solucione tu problema.

Saludos,


Anonymous
Not applicable
Author

Hola Francisco,

Estás escribiendo mal las variables en el script, estás comparando los nombres de las variables y no los contenidos de las variables.

Con fechas es mejor ponerlas entrecomillas, ya que pueden contener espacios y caracteres especiales que harán que te falle tu script si no las entrecomillas:

Update_excell:

LOAD Date , filetime() as X FROM (ooxml, embedded labels, table is Sheet1);

LET v_actual_UpdateXLS =Peek('X',0,'Update_excell');

STORE X from Update_excell  into ;

DROP Table Update_excell ;

old_Update_excell:

LOAD X FROM (qvd);

LET v_old_UpdateXLS =Peek('X',0,'old_Update_excell');

DROP Table old_Update_excell;

IF '$(v_old_UpdateXLS)' = '$(v_actual_UpdateXLS)' then //TE FALTAN AQUÍ LOS PARÉNTESIS PARA QUE QV SEPA QUE TIENE QUE DEVOLVER EL VALOR DE UNA VARIABLE

//DROP Table TABLE_2;

set v_resultado ='iguales';

ELSE

//DROP Table TABLE_1;

set v_resultado ='diferentes';

ENDIF

Un Saludo!!!

Not applicable
Author

vaya fallo, mil gracias Manuel

Not applicable
Author

Gracias Santiago

Anonymous
Not applicable
Author

No te preocupes, pasa muchas veces, y siempre buscamos lo más complejo antes que lo más sencillo.

Un saludo!!

Not applicable
Author

hi clark, is solved. All is about a syntax mistake

My Script:

IF '$v_old_UpdateXLS' = '$v_actual_UpdateXLS' then

Correct Script:

IF '$(v_old_UpdateXLS)' = '$(v_actual_UpdateXLS)' then

i forgot '()' 

Thanks clark