Datawindow dinámicos

En referencia a la respuesta que me diste en anterior pregunta, como puedo generar una instrucción sql dinámica de este tipo.
select * from :tabla;
He leído algo acerca de SQLSA o SQLDA pero no se como usarlo.
Se trata de que tengo una tabla con los datos de usuarios y en ella hay una columna donde se almacena el nombre de una tabla suya.
De ahí que al hacer las sentencias varia de donde va a buscar los datos.

1 respuesta

Respuesta
1
perdon por no haber especificado ese punto, la creacion de un datawindow dinamico no refiere a un objeto en especifico, sino que este es creado dinamicamente, en el ejemplo que te presento existe una sentencia ls_dw_dinamic = SQLCA.SyntaxFromSQL ( ls_query, "Style(Type=grid)", ls_error )
Esto significa que en la variable ls_dw_dinamic será depositado todo lo necesario para que por medio del método CREATE, el dw_1 sea capaz de crear un datawindow object, o sea sin que tu lo programes, esto será creado en su totalidad, y será un objeto temporal, por lo que cuando termine de ser utilizado este desaparece tal y como una variable temporal.
Para que pruebes como funciona, integra en tu pantalla un control datawindow y en el evento create inserta el código que te presento en el ejemplo, por supuesto sustituye los campos y tabla por una que tengas la seguridad que existe en tu base de datos
Una pregunta tonta, donde puedo insertar el código de ejemplo. En el syntax sql del objeto datawindow o en un evento del control datawindow.
Saludos
Con respecto a tu inquietud.
Para formar un datawindow dinámico necesitas de una base simplemente,
necesitas de una cadena string la cual contenga los campos, y las condiciones
(Porsupuesto las clausulas select, from, where)
Una manera sencilla de crear una sera:
string ls_select
string ls_where
string ls_query
string ls_dw_dinamic
string ls_error
ls_select = "Select codigo, direccion from cliente"
ls_where = " where cliente.nombre like '%"+ is_cust + "%'"
ls_query = ls_select+ls_where
ls_dw_dinamic = SQLCA.SyntaxFromSQL ( ls_query, "Style(Type=grid)", ls_error )
dw_1.Create ( ls_dw_dinamic, ls_error )
IF ls_error <> '' THEN
MessageBox ( "error de sintaxis", ls_error )
ELSE
dw_1.SetTransObject ( SQLCA )
dw_1.Retrieve()
END IF
En el ejemplo que pones en tu pregunta la situación cambia radicalmente
pues ahora dependes de una cadena y no una sintaxis que interroga el compilador
de power builder
Me imagino que con esta posibilidad podrás echar a andar un poco
tu imaginación, ya sabes, puedes combinar todo tipo de cosas en esta cadena
solo asegurate que funcione
Por supuesto que cuando presente el resultado, a lo mejor las etiquetas
que están relacionadas no serán de tu agrado,
posiblemente tampoco el color de fondo, fonts, etc.
Todo esto puede ser cambiado o modificado una vez creada la ventana dinámica,
por medio de la función MODIFY()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas