Power Builder - dw_1.modify("campo.Expression = '" +ls_formula+"'"

 
Vista:

dw_1.modify("campo.Expression = '" +ls_formula+"'"

Publicado por Elvis (24 intervenciones) el 12/09/2008 01:47:49
Saludos a todos y todas.

Dentro de la variable 'ls_formula' tengo una formula que contempla if, condiciones y demas.

La formula la envío como expresión a un campo compute para que con solo hacer el modify pueda obtener el resultado; de la formula atraves de un get al mismo campo

dw_1.modify("campo.Expression = '" +ls_formula+"'")
ld_resultado = dw_1.getItemNumber(1, "campo")

De manera que uso el expresion de un objeto(campo) para obtener un resultado de una formula. Todo esto funciona perfecto, pero el problema es que dependo de un objeto visual para poder aplicar el "expression"...

Existe en pb alguna funcion o algo parecido al Expression que me ayude a obtener el mismo resultado sin el usar un datawindos o objeto visual?

Gracias
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:dw_1.modify(

Publicado por amilcar (407 intervenciones) el 12/09/2008 12:10:10
hola yo uso el mismo sistema pero lo uso con datastore. no se si es eso lo que buscas.
te pongo el script para darte una idea

datastore ldst_exp
ldst_exp = create datastore
ldst_exp.dataobject="dw_calculo_formulas_por_expresion"
ldst_exp.settransobject(sqlca)
ldst_exp.retrieve(al_legajo_id)

// cargo la expresion
ldst_exp.object.calculador.expression=ls_expresion_nueva

// obtengo el valor
adec_importe=ldst_exp.getitemdecimal(1,"calculador")

destroy ldst_exp

espero te sirva
saludos desde argentina
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:dw_1.modify(

Publicado por Pedro Gonzalvo Escribano (6 intervenciones) el 12/09/2008 13:37:53
Los datastore hacen lo mismo que las DW con los datos pero sin nada visual.

Si vas a usar la fórmula en más de una ventana, crea el datastore desde el menú:
File | New | PB Object | Standard Class | datastore
y selecciona el DataObject (o sea, la DataWindow con tus datos)
y guárdala dándole nombre (ej: ds_exp)

Crea una instancia (ej: lds_exp) de tu datastore:
ds_exp lds_exp
lds_exp = create ds_exp

Incluye tu código
lds_exp.modify("campo.Expression = '" +ls_formula+"'")
ld_resultado = lds_exp.getItemNumber(1, "campo")

Cuando acabes, no olvides destruir la instancia:
destroy lds_exp

Si sólo vas a usarlo en una ventana, es mejor crear el datastore desde el menú:
Insert | Object | DataStore
con lo que se crea un objeto no-visual de nombre: datastore_1
Pulsa el botón derecho para abrir sus propiedades
Cambia el nombre (ej: lds_exp) y selecciona el DataObject

Ya puedes incluir el código sin hacer falta crear ni destruir el datastore:
lds_exp.modify("campo.Expression = '" +ls_formula+"'")
ld_resultado = lds_exp.getItemNumber(1, "campo")

Espero que te sirva para conocer los datastores.
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