Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
sorrakis01
Specialist
Specialist

VARIABLE EN BUCLE SCRIPT

Hola,

tengo una variable en un script que me sirve ara capturar varios enlaces web pero el problema es que se me inicializa a NULL cada vez, Adjunto script

Tabla_Web:

LOAD ID,

     Equipo,

     Equipo_Web (nombre del equipo en enlace web)

     FROM

     FICHERO EXCEL;

FOR n = 0 TO 30

  let nombre_web = peek('Equipo_Web',$(n),Tabla_Web);

Tabla_Personas:

  LOAD Persona, 

      [Fe. nac.] as [Fecha Nacimiento Persona]

  FROM

[http://www.xxxxxxxxxxxxxx.com/equipos/$(nombre_web)/9/]

NEXT n;

Cuando la i es 0 la primera vez me captura bien pero cuando la i es 1 ya no me captura nada y lo deja en NULL.

He visto que si la variable la cargo en el siguiente LOAD de la tabla Personas, si que me funciona el bucle ya que luego si que recoge la variable,  pero no se porque no me deja poner:

Tabla_Personas:

  LOAD Persona, 

      [Fe. nac.] as [Fecha Nacimiento Persona],

     $(n) as ID_NUM     (esto me esta dando error)

  FROM

  RUTA HTML;



Sabéis cual puede ser el problema?

Gracias por vuestra ayuda.

1 Solution

Accepted Solutions
alex_millan
Creator III
Creator III

Buenas Jordi,

cuando declaras la variable, te falta poner el nombre de la tabla entre comilla:

let nombre_web = peek('Equipo_Web',$(n),'Tabla_Web');


Así debería poderte funcionar sin problemas.


Ya me dirás 😉


Un saludo,

View solution in original post

5 Replies
sorrakis01
Specialist
Specialist
Author

Hola,

Alguna idea por favor?

Muchas Gracias.

Not applicable

Hola Jordi.

He realizado pruebas para tu caso con cargas de QVD y de tantos errores he podido hallar una forma para tu carga.

Alguno puntos a tomar en cuenta.

1) las ruta de archivos planos considerarlo como variables si que existe uniformidad.

let ruta1 = '[http://www.xxxxxxxxxxxxxx.com/equipos/'

let ruta2 = '/9/]'

2) utilizar una varible que cuente la cantidad de registros que existen en tu excel

let sCantidad = NoOfRows('Tabla_Web');

3) En el tercer parametro de la funcion peek() debe estar entre comillas.

(Este punto asumo que la principal solucion a tu problema) ya que sin comillas siempre me mostraba error en la 2da carga.

let nombre_web = peek('Equipo_Web',$(n),'Tabla_Web');

4) Asumo que el campo [Fe. nac.] existe para todas las rutas.

SCRIPT MODIFICADO

Tabla_Web:

LOAD ID,

    Equipo,

    Equipo_Web (nombre del equipo en enlace web)

    FROM

    FICHERO EXCEL;

let sCantidad = NoOfRows('Tabla_Web');

FOR n = 0 TO $(sCantidad)-1

let nombre_web = peek('Equipo_Web',$(n),'Tabla_Web');

Tabla_Personas:

  LOAD Persona,

      [Fe. nac.] as [Fecha Nacimiento Persona]

  FROM

$(ruta1)$(nombre_web)$(ruta2)

NEXT n;

Espero te funcione.

Atte.

Luis Valencia

alex_millan
Creator III
Creator III

Buenas Jordi,

cuando declaras la variable, te falta poner el nombre de la tabla entre comilla:

let nombre_web = peek('Equipo_Web',$(n),'Tabla_Web');


Así debería poderte funcionar sin problemas.


Ya me dirás 😉


Un saludo,

sorrakis01
Specialist
Specialist
Author

Gracias Alex!!!!

La verdad es que funciona perfecto, estaba  atascadísimo!

Saludos!

sorrakis01
Specialist
Specialist
Author

Hola Luis,

Muchas Gracias por tu contestación. En principio con lo de las comillas ya lo solucioné y funciona todo perfecto.


He tenido en cuenta el NoOfRows para mi proyecto final  y lo de las variables lo tuve en cuenta pero me daba errores y finalmente lo descarté (luego lo pruebo de nuevo).

Así que muchas gracias por tu explicación.

Saludos,