• Viernes 29 de Marzo de 2024, 15:07

Autor Tema:  Retrieval arguments y select  (Leído 3426 veces)

lazy

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Retrieval arguments y select
« en: Lunes 3 de Mayo de 2010, 21:35 »
0
Alguien sabe si existe alguna forma de concatenarle un string a un retrieval argument en un select de un datawindow?
Algo asi es lo que me gustaria escribir pero me tira error :P

SELECT *
FROM tabla
WHERE columna LIKE ('_' + :camp + '%')

(estoy usando PB7 y Sybase ASA 7)

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Retrieval arguments y select
« Respuesta #1 en: Martes 4 de Mayo de 2010, 00:00 »
0
Hola.

Creo que el error lo tienes en '_' + :camp + '%'

Lo que tienes que hacer es montar la datawindow

Select * from tabla where columna like :arg

y posteriormente en código

dw_1.retrieve ('_' + ls_valor + '%')

Ah! y cuidado con que ls_valor no tenga un solo '%' porque si es así el retrieve fallará y te echará de la aplicación. (¡creo!)

lazy

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Retrieval arguments y select
« Respuesta #2 en: Martes 4 de Mayo de 2010, 00:47 »
0
Gracias por la respuesta davidmolina1, en general lo hacia de esa forma (como en tu post).

Perdón, me expresé mal. Lo que quiero hacer es algo tipo:

SELECT *
FROM tabla
WHERE columna1 LIKE ('_' + :camp + '%') OR columna2 LIKE ('__' + :camp + '%')

(puede tener 1 o 2 caracteres al principio y luego el "camp")

Entonces tendréa que pasarle 2 argumentos casi idénticos ('_' + :camp + '%') y ('__' + :camp + '%'). Estaba buscando la forma de hacerlo con un solo argumento, pero no encontré nada :(

davidmolina1

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Retrieval arguments y select
« Respuesta #3 en: Martes 4 de Mayo de 2010, 21:29 »
0
Yo tampoco veo como hacerlo.

No me preocuparía por el número de argumentos.

Otra solución sería extraer la SQL mediante un Describe ('datawindow.table.select'), luego componerla en código y volver a ponerla con un Modify ('Datawindow.table.select  = '+ls_select).

De esa forma no tienes que pasar ningún retrieve ya que las clausulas se montan en código. simplemente haces un retrieve () y listo.

saludos.