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 -----
From: Fernando Pérez
To: forum.help400@combios.es
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