SQL - Consulta con for, endfor

 
Vista:
sin imagen de perfil

Consulta con for, endfor

Publicado por Nika (6 intervenciones) el 10/03/2017 11:27:02
Hola de nuevo. Sigo aprendiendo de este mundillo del sql y me ha surgido una nueva cuestión. La cosa es que he hecho la siguiente consulta:

1
2
3
4
5
6
7
8
9
tnIndice=Listado.Ejercicios_Seleccionados_Cont()
Listado.Ejercicios_Seleccionar(tnIndice)
 
Listado.Sqlexec("SELECT YEAR(t1.fecha_fac) as año, t1.fecha_fac as fecha, t2.codigo, t1.importe, t1.factura, t1.numero as albaran, iif(t2.comunitari = 1, importe, 0,) as nacional, iif(t2.comunitari = 2, importe, 0,) as intracomunitaria, iif(t2.comunitari = 3, importe, 0,) as exportaciones, t2.provincia,  t3.nombre as pais, iif(t2.idioma_imp='052','PUZZLE TOYS','dcasa') as marca, iif(t2.idioma_imp='052','05','01') as cod_marca, t3.codigo AS cod_pais from ges-tion!c_albven t1 left join gestion!clientes t2 on t1.cliente=t2.codigo left join comu-nes!paises t3 on t2.pais=t3.codigo left join comunes!paises t4 on t2.pais=t3.nombre where t1.factura!='' ","cur_ventas_anuales")
 
SELECT t1.año, t1.fecha, t1.codigo, t1.importe, t1.factura, t1.albaran, t1.nacional, t1.intracomunitaria, t1.exportaciones, t1.provincia,  t1.pais, t1.marca, t1.cod_marca, t1.cod_pais from cur_ventas_anuales t1  INTO CURSOR cur_ventas_anuales_resultado
 
 
Listado.cursor='cur_ventas_anuales_resultado'


Y en esta consulta tengo que integrar lo siguiente:


FOR tnIndice=1 TO Listado.Ejercicios_Seleccionados_Cont()
Listado.Ejercicios_Seleccionar(tnIndice)

lcSQL="SELECT YEAR(t1.fecha_fac) as año, t1.fecha_fac as fecha, t1.importe, t1.factura, t1.numero as albaran "+;
"from c_albven t1where t1.factura!=''"

micursor="curlama"+allt(str(tnIndice))
*messagebox(micursor)

Listado.sqlexec(lcSQL,micursor)

ENDFOR

sql="SELECT * FROM curlama1"

FOR tnIndice=2 TO Listado.Ejercicios_Seleccionados_Cont()

sql=sql+" UNION SELECT * FROM curlama"+allt(str(tnIndice))

ENDFOR

*Listado.sqlexec(sql,"curfinal")
sql=sql+" INTO CURSOR curfinal"
&sql

Listado.cursor="curfinal"

Esto último lo necesito para que el usuario pueda consultar el año o años que él quiera. Estoy intentando añadir esto a mi consulta pero no me acaba de funcionar. Por ejemplo, la consulta no funciona cuando pongo más de un IIF:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
FOR tnIndice=1 TO Listado.Ejercicios_Seleccionados_Cont()
Listado.Ejercicios_Seleccionar(tnIndice)
 
lcSQL="SELECT YEAR(t1.fecha_fac) as año, t1.fecha_fac as fecha, t2.codigo, t1.importe, t1.factura, t1.numero as albaran, iif(t2.comunitari = 1, importe, 0,) as nacional, t2.provincia, t3.nombre as pais, t3.codigo as cod_pais "+;
"from gestion!c_albven t1 left join gestion!clientes t2 on t1.cliente=t2.codigo left join comunes!paises t3 on t2.pais=t3.codigo left join comunes!paises t4 on t2.pais=t3.nombre where t1.factura!=''"
 
micursor="curlama"+allt(str(tnIndice))
*messagebox(micursor)
 
Listado.sqlexec(lcSQL,micursor)
 
ENDFOR
 
sql="SELECT * FROM curlama1"
 
FOR tnIndice=2 TO Listado.Ejercicios_Seleccionados_Cont()
 
sql=sql+" UNION SELECT * FROM curlama"+allt(str(tnIndice))
 
ENDFOR
 
*Listado.sqlexec(sql,"curfinal")
sql=sql+" INTO CURSOR curfinal"
&sql
 
Listado.cursor="curfinal"

Sé que algo estoy haciendo mal y algunas cosas tampoco las logro comprender del todo. ¿Alguien me podría dar un empujón? Disculpas de antemano por tanto texto y muchas gracias por leerme
sql
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder