Si en la base de datos es alfanumérico has de añadir las comillas:
SelectTwo = %TRIMR(SelectOne) + '''' + plinea
+ '''' ('''' son cuatro comillas simples)
Juan Antonio escribió:
Ya probé lo que me dices, pero sigue sin funcionar, ya que
al realizar el debug el valor queda sustituido por =HML, sin apostrofes
(p.ej: 'HML').
Gracias.
----- Original Message ----- From: "alex martinez"
<[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Monday, October 17, 2005 2:09 PM
Subject: Re: SQL dinámico en programa ILE RPG
Hola:
¿plinea no es un campo de entrada (definido en una *entry plist? Si es
así, para que funcione debes realizar un Eval similar a este:
Eval SelectTwo = %TRIMR(SelectOne) + plinea
SAlu2
El 17/10/05, Juan Antonio<[EMAIL PROTECTED]> escribió:
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: [email protected]
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
--
Mi blog sobre as400
http://www.ajut400.com
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400
--
Saludos.
Fernando Pérez
Cerámica Saloni. Dpto. Sistemas
|