En SQL dinámico yo concateno así para el SELETQ
C EVAL Seletq= 'SELECT arcodi, arnomb , arcate'+
C 'FROM fartic ' +
C 'WHERE arempr= '+ %char(@empresa)
C + ' And Arsitu= '''+ %trim(@situac)+''''
C + ' And (Arcate='''+ %trim(@categoria)+''''
C + ' Or Arcate= '''+ %trim(@categoria2)+''')'
Las que pone %char son las variables numéricas y las que tienen un montón de comillas las alfanuméricas,para que las comillas se mantengan en la sentencia. A ver si te sirve.
| "Juan Antonio"
<[EMAIL PROTECTED]>
Enviado por: [EMAIL PROTECTED] 17/10/05 15:40
|
|
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
