Os agradezco vuestras aportaciones.
Como alguien dijo en su día en este foro... "el foro sigue muy vivo".
 
----- Original Message -----
Sent: Monday, October 17, 2005 4:10 PM
Subject: Re: SQL dinámico en programa ILE RPG

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: <forum.help400@combios.es>
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: 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



--
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

Reply via email to