Power Builder - sumar valores mientras se digita

   
Vista:

sumar valores mientras se digita

Publicado por alejandra (1 intervención) el 23/10/2007 17:01:58
Hola soy nueva en power builder,vengo de visual basic no,si me pueden ayudar con este problemita.
Tengo un datawindow freeform

con 5 campos los campos valor son de tipo decimal

descripcion valor1----------
descripcion valor2---------
descripcion valor3
descripcion valor4--------
descripcion valor5-------

como haria que al momento de ir ingresando se vaya incremnetando el total de la lo que singresa en valor 3,y los campos quese deje de ingresar los rellene con 0,00
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:sumar valores mientras se digita

Publicado por amilcar (406 intervenciones) el 23/10/2007 17:48:11
una opcion seria usar un compute field, con la suma de los campos valorn

y el tema de los ceros lo puedes resolver con la propiedad mask de cada campo

espero te de una idea
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:sumar valores mientras se digita

Publicado por Jorge Escobar (110 intervenciones) el 24/10/2007 03:30:32
tienes el evento editchanged para hacer lo que quieres.

seria mejor que crees una funcion a nivel de window para que haga el ca´lculo, a dicha funcion lo invocarías desde el editchanged del dw.
sería algo asi

evento editchanged.
String ls_ColType
ls_ColType = this.Describe(dwo.name + ".ColType")
If mid (ls_ColType,1,4) = 'deci' Then
this.Accepttext( )
of_CalcularMonto()
End If

// funcion of_calcularmonto()
// script
long ll_row
decimal{2} ldc_monto1, ldc_Monto2, ldc_monto3, ldc_monto4
dw_1.AcceptText()
ll_row = dw_1.GetRow()
ldc_monto1 = dw_1.GetItemDecimal(ll_row,"valor1")
ldc_monto2 = dw_1.GetItemDecimal(ll_row,"valor2")
ldc_monto3 = dw_1.GetItemDecimal(ll_row,"valor3")
ldc_monto4 = dw_1.GetItemDecimal(ll_row,"valor4")

ldc_monto5 = ldc_monto1 + ldc_monto2 + ldc_monto3 + ldc_monto4
dw_1.SetItem(ll_row,"valor5",ldc_monto5)

ahora. para que tome los valores en 0, en el diseño del datawindow menu view/Columns Specifications setea el initial value en 0. válido cuando insertas un nuevo registro.

si haces un retrieve() al datawindow y los valores en la base de datos estan en null tendrías que especificar select isnull(valor1,0),isnull(valor2,0) from tabla para evitarte problemas al momento de calcular.
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

Respuesta.

Publicado por Leopoldo Taylhardat (690 intervenciones) el 26/10/2007 00:19:40
Saludos...
Para sumar los valores, utiliza un campo calculado (compute field) que te daría la suma (y le puedes poner la máscara de edición) en valor le pones: campo1+campo2....

Para que le ponga cero (0) a las columnas, la forma más fácil es en el modo de diseño del dw, tienes en el menu de 'Rows' el submenú 'Column Specification', ahí le asignas los valores en valor inicial, en este caso a las columnas le pones 0 (cero en valor), a otras columnas le puedes pones null, etc... por ejemplo a las de fechas le pones: today
y al incluir una nueva línea (row) le va aponer esos valores por defecto...
espero que te sirva.
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

Nota adicional...

Publicado por Leopoldo Taylhardat (690 intervenciones) el 26/10/2007 00:40:50
Te recomiendo que aprendas a usar el repositorio de PB...
Con las tablas de repositorio te ahorras todo ese trabajo de asignar los valores iniciales, nombre de los títulos de las columnas, etc. en cada datawindow... para eso, abres la base de datos y llamas a la tabla, con el popup menú (botón derecho) le das alter table y en cada columna tienes para asignarle los valores por defecto, Formato, Edición, Titulo Columnar, Título FreForm, valor inicial, alineación, etc, etc....
Eso se guarda en una tabla que se llaman PBCATCOL
Hay otras tablas:
pbcatedt: para formatos de edición
pbcatfmt: para formatos de máscaras
pbcatvld: para reglas de validación.
pbcattbl: para definición de formato de tablas...

Cuando aprendes a utilizar estas tablas se te ahorra posiblemente un 80% el trabajo cuando armas los datawindows....
Inclusive si tienes columnas con valores predeterminados que vas a trabajar con un dropdownlistbox, por ejemplo, que tengas una columna (llamada por ejemplo: 'situacion_documento') y sus valores son:
1=Activo
2=Suspendido
3=Pagado
4=Traspasado
5=Vencido
...
99=anulado...
...
Sería fastidioso cada ves que vayas a usar esa columna tener que definir cada uno de los valores para que te despliegue el texto de acuerdo al valor de la columna...entonces...

eso lo defines en la tabla 'PBCATEDT'
le pones un nombre(por ejemplo: 'DDLB_Situación_Documento')
luego a la columna 'situación_documento' en el edit le asignas: DDLB_Situación_Documento
Cierras el PB y lo vuelves a ejecutar (ya que estas tablas se cargan al iniciar PB)...
Cada nuevo datawindow en que utilices la columna 'situación_documento' automáticamente el PB le va a poner por defecto los valores como DropDownListBox y los valores que definiste...
...
Claro... el aprender a definir estos valores es un poco más complejo que como te lo expliqué pero el aprendizaje de esto a la larga te va a beneficiar...

espero que te sirva...
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