Gracias,
Fernando.
Los dos temas están
solucinados, pero desarrollandolo más, me encuentro con el siguiente
problema.
El parámetro es para
restringir el SQL embebido, de manera que tan solo me muestre los de esa
línea. Realizando el SQL sin esta restricción funciona, pero si la pongo no
selecciona registros, dándome el SQLCOD = -00000501. Supongo que el problema
estará en la sintaxis. ¿Alguna idea?.
0040.01 D
SelectOne
S
500A INZ('SELECT
-
0040.02
D
mnpolf.epor, mnpof.enpor, -
0040.03
D
mnpolf.eporl, mnpolf.estsa -
0040.04
D
FROM mnpolf INNER JOIN mnpof ON -
0040.05
D
mnpolf.epor = mnpof.epor -
0040.06
D
WHERE
mnpolf.eline=')
0040.08 D
Select
S
500A INZ('SELECT
-
0040.09
D
mnpolf.epor, mnpof.enpor, -
0040.10
D
mnpolf.eporl, mnpolf.estsa -
0040.11
D
FROM mnpolf INNER JOIN mnpof ON -
0040.12
D
mnpolf.epor = mnpof.epor -
0040.14
D
ORDER
BY')
0044.01 D
OrderBy
S
20A INZ('mnpolf.epor')
0044.02 D
Where
S
20A INZ('plinea') --->
Parámetro entrada de 3 A
0042.00 D
SelectTwo
S
500A INZ(' ')
0106.02 * Solo
con Order
by...
0107.00
C
Eval SelectTwo = %TRIMR(Select) + ' '
0108.00
C
+ OrderBy
----> SI Selecciona
registros
0108.01 * Solo con
Where...
0108.02
C*
Eval SelectTwo =
%TRIMR(SelectOne)
0108.03
C*
+
Where
-----> No selecciona
registros
Realizando el debug, y
evaluando el campo SELECTTWO, compone lo siguiente:
'SELECT
mnpolf.epor, mnpof.enpor, mnpolf.eporl, mnpolf.estsa '
'FROM
mnpolf INNER JOIN mnpof ON mnpolf.epor = mnpof.epor WHE'
'RE
mnpolf.eline=plinea
'
-----
Original Message -----
Sent:
Thursday, October 13, 2005 5:50 PM
Subject:
Re: SQL dinámico en programa ILE RPG
c1, ..., c4 han de ser variables definidas en el programa (
no valen campos de ficheros ni de pantallas).
El error del paso de
parámetros no creo que se deba a usar sql, que lo permite. En todo caso,
ya que es ile, prueba a definirle el prototipo y el interfaz, a ver si
así.
Juan Antonio escribió:
He estado
realizando algún programa a este respecto, y me encuentro con dos
problemas.
1.- El SQL está realizado con la unión de dos tablas, de manera que
en las sentencias:
0157.00 C/EXEC
SQL
0159.01 C+ FETCH NEXT FROM
mycsr
0159.02 C+ INTO
:c1, :c2, :c3, :c4
0160.00 C/END-EXEC
me está dando en la compilación que los campos no existen. Claramente,
lo que me falta es la calificación de a qué tabla corresponden, pero
desconozco la sintaxis a utilizar. He probado con :tabla.c1, :tabla1.c2
etc pero sigue dándome error. ¿Alguien me orienta?.
2.- El otro tema, es que debo pasarle un parámetro al programa, y este
no me lo permite. Al quitarle el Entry Plist queda resuelto, pero me es
necesario pasarle un valor para la selección. ¿Alguna
idea?.
Gracias.
--
Saludos.
Fernando Pérez
Cerámica Saloni. Dpto.
Sistemas