Power Builder - ERROR en SetSQLSelect

 
Vista:

ERROR en SetSQLSelect

Publicado por Pitu (13 intervenciones) el 27/11/2008 22:14:59
Hola a todos, primero de todos muchas gracias por leerme. Soy prácticamente nuevo en Power Builder y tengo un problema que no consigo resolver.

Tengo una window que contiene un datawindow (llamada dw_datos) dentro y otros objetos. El tema es que quiero modificar la sentencia SQL que se ejecuta en el datawindow, según una variable que recibo (la recibo bien). Actualmente lo hago así:

String new_select
new_select = dw_datos.GetSQLSelect()
new_select = new_select + " AND cliente='" + codigo_cliente +"' ORDER BY id"
dw_datos.SetSQLSelect(new_select)
//dw_datos.SetTransObject(SQLCA)
dw_datos.Retrieve()

Lo he puesto de memoria ya que no lo tengo aquí, es posible que alguna sentencia esté mal escrita. El problema está en que me dice error -1 (eso he leido que es cuando el SetSQLSelect da error) y que haga un SetTrans o SetTransObject. Lo he probado con los dos y sin ninguno, pero dice lo mismo.

He debugado y probado la sentencia "new_select" directamente en el SYBASE, y la genera perfectamente.

He leido buscando que esto suele ser debido a que el datawindow contiene variables (es dinamica), pero no es mi caso.

No consigo arreglaro, porque puede ser debido?

Muchas gracias a todos, un saludo desde Barcelona (España)!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ERROR en SetSQLSelect

Publicado por Pitu (13 intervenciones) el 27/11/2008 23:16:10
Por cierto, el código del mensaje de antes está en el evento OPEN de la window!

gracias a todos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ERROR en SetSQLSelect

Publicado por sthif (63 intervenciones) el 28/11/2008 15:34:23
Hola, sería bueno que coloques el código tal como está en el script, pero lo que puedo ver que el getsqlslect extrae el selec más no el where y lo que tratas de agregar al select es un "and", quizas eso pueda ocasionar el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ERROR en SetSQLSelect

Publicado por Pitu (13 intervenciones) el 28/11/2008 17:17:11
Hola, muchisimas gracias por contestar sthif ;)

Pues el código es exactamente el que he copiado. He debugado la sentencia SQL que acaba teniendo la variable "new_select" antes de hacer el SET y la crea perfectamente.

La sentencia inicial que hay en el datawindow es algo como:
SELECT x, y, z FROM TX LEFT OUTER JOIN TY ON TX.id=TY.id_tx (...) WHERE k<1000
y lo que yo quiero es añadirle algo como 'AND tx.id=3 ORDER BY m' por poner un ejemplo. El valor de 'new_select' antes de hacer el SET (lo he debugado) está bien:
SELECT x, y, z FROM TX LEFT OUTER JOIN TY ON TX.id=TY.id_tx (...) WHERE k<1000 AND tx.id=3 ORDER BY m. De hecho la copio y la pego directamente en el SYBASE y me devuelve exactamente lo que quiero, pero al hacer el SetSQLSelect me da el error comentado...

No tendré acceso al código entero hasta el lunes, pero es así seguro.
Muchas gracias por el interés! ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ERROR en SetSQLSelect - SOLUCIONADO

Publicado por Pitu (13 intervenciones) el 01/12/2008 11:28:42
Hola a todos, ya conseguido solucionar el problema. Resulta que el orden de los factores SI altera el producto xD

La sentencia SetTransObject(SQLCA) debía ir antes del SetSQLSelect. De manera que el código queda:
(...)
dw_datos.SetTransObject(SQLCA)
dw_datos.SetSQLSelect(new_select)
dw_datos.Retrieve()

Y ahora, parece ser, que funciona correctamente.

Tengo una preguntilla, en otros trozos de código de la aplicación (no hechos por mi), ejecuta el SetSQLSelect sin hacer el SetTransObject. Alguien podría explicarme cuando se debe ejecutar el SetTransObject y cuando no?

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar