Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola.
Soy nuevo en qlikview y tengo el siguiente problema, desde la primera tabla quiero obtener todos los datos del campo aufnr (de la tabla aufk) que cumplan con la condición de que phas2 sea distinto de X. Para luego usar esos datos y obtener los equipos asociado a esas ordenes en la tabla afih.
Este listado se lo cargo a la variable vNOrden, pero al colocarlo como condición de carga en la tabla afih no me arroja ningún resultado positivo, es mas la variable aparece vacía. Lo mejor que he logrado es pasar 1 solo valor.
He comprobado los datos originales y debieran obtener por lo menos 10 registros de ordenes que cumplan la condición de phas2 distinto de 'X'.
aufk:
LOAD
aufnr as orden,
phas2;
SQL select aufnr phas2 from aufk where phas2 <> 'X';
Store * from aufk into $(vDirectotyPath)aufk.qvd;
Let vNOrden = peek('orden');
Drop table aufk;
afih:
LOAD
aufnr as orden,
equnr as equipo;
Select aufnr equnr from afih where aufnr = '$(vNOrden)';
Store * from afih into $(vDirectoryPath)afih.qvd;
Drop table afih
También probé con agregar la función concat en la tabla aufk, y cambiar el selec de la tabla afih:
Concat(chr(39) & 'aufnr' & chr(39), ', ') as orden, //usado en tabla aufk
Select aufnr equnr from afih where aufnr IN ('$(vNOrden)'); //usado en tabla afih
Pero me arroja un error haciendo referencia a que la instrucción SQL esta mal formulada.
Atento a cualquier ayuda que me puedan dar
Saludos a todos.-
Releyendo tu pregunta, quizás no te entendí antes:
¿lo que quieres es limitar la carga en la segunda tabla a las ordenes cargadas en la primera consulta?
Si fuera así, quizás podrías plantearte hacer un join de las dos tablas, por ejemplo:
aufk:
LOAD
aufnr as orden,
phas2;
SQL Select aufnr phas2 from aufk where phas2 <> 'X';
inner join(aufk)
afih:
LOAD
aufnr as orden,
equnr as equipo;
SELECT aufnr equnr from afih;
Hola Mauricio,
¿has probado a poner la condición sin colocar la variable sin enmarcar en comillas?
...
where aufnr = $(vNOrden)
Debería funcionar.
Espero que te sirva de ayuda,
Un saludo,
Hola, gracias por responder.
Probé esta posible solución pero me arroja el siguiente resultado.
/QTQVC/OPEN_STREAM failed after 00:00:01 Key = SQL_ERROR (ID:00 Type:E Number:001 Unexpected end of condition after "=" . .)
SQL Select * from AFIH where AUFNR =
Saludos.-
Mauricio Vargas;
Una recomendacion:
1.-Primeramente todo lo que tengas en las tablas que vayas a utilizar de SQL pasalo a tablas residentes o .qvd's de qlikview.
2..- un problema muy comun que yo tenia al tratar de asociar o ligar tablas era porque en los campos llave tenia espacios en blanco lo cual tuve que utilizar ltrim, rtrim.
checalo
saludos!!! en lo que te pueda ayudar!!1
Hola, gracias por la aclaración.
En este caso el resultado de las tablas se van a una tabla QVD, para un tratamiento posterior. Pero me parece valido tratar directamente este mismo problema en los QVD y no en la carga desde SAP.
Con respecto a los espacios vacíos, ya me había percatado de esto y corregí los errores que tenia..
Gracias.-
¿Has depurado el script y confirmado que la variable toma el valor correctamente?
Releyendo tu pregunta, quizás no te entendí antes:
¿lo que quieres es limitar la carga en la segunda tabla a las ordenes cargadas en la primera consulta?
Si fuera así, quizás podrías plantearte hacer un join de las dos tablas, por ejemplo:
aufk:
LOAD
aufnr as orden,
phas2;
SQL Select aufnr phas2 from aufk where phas2 <> 'X';
inner join(aufk)
afih:
LOAD
aufnr as orden,
equnr as equipo;
SELECT aufnr equnr from afih;
Estimado;
Efectivamente, eso eso es lo que quiero. He probado tu solución y he logrado lo que quería hacer.
Muchas gracias