Ver la Versión Completa : [Duda] Sumar decimales
Socavi
31 de diciembre de 2022, 11:06
Tengo un problema que no he podido resolver, sumar una columna de ListView.
La variable global, la tengo definida como : TOTSUP PIC S9(5)V99 COMP-5 (He probado con COMP-3 y COMP-4) pero no me suma la columna o no aparece la suma donde tengo previsto.
Trabajo en Windos-11 con PWCobol v.9
fastpho
31 de diciembre de 2022, 16:56
Hola @Socavi, dos cuestiones sin ver el codigo , la primera la columna 4 del ListView es declarada como numerica?
segunda el campo donde debes mostrar el total de las superficies esta visible es decir POW-TRUE
De todas maneras te paso un simple ejemplo que suma las columnas 3 , 4 , 5 y las muestra en un TextBox
Saludos ....
Socavi
31 de diciembre de 2022, 17:57
Buenas tardes Fastpho y muchas gracias por tu ayuda. A mi me resulta extraño que sume correctamente la columna(3) de la población, pero no la (4) de Superficie
las variables global creo que estan bien declaradas y no se dónde encontrar el error.
OPEN INPUT MUNICI
invoke Lista 'Clear'
move ' ' to finfic move 0 to cuantos
perform until finfic = 's'
read MUNICI NEXT RECORD AT END MOVE 's' to finfic
not at end
IF MUNICOM = WZMU
INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
MOVE 'ListItems'(RETORNO) OF Lista TO LINEA
MOVE MUNICOD TO 'Text' (1) OF LINEA
MOVE MUNINOM TO 'Text' (2) OF LINEA
MOVE MUNIPOB TO 'Numeric'(3) OF LINEA
MOVE MUNISUP TO 'Numeric'(4) of linea
PERFORM CALCUL THRU FI-CALCUL
move V-COE TO 'Numeric'(5) OF LINEA
MOVE MUNIALT TO 'Numeric'(6) OF LINEA
MOVE IDESCAT TO 'Numeric'(7) OF LINEA
ADD MUNIPOB TO TOTPOB
ADD MUNISUP TO TOTSUP
add 1 to cuantos
END-IF
end-read
end-perform.
close MUNICI.
move cuantos TO 'Caption' of CmStatic32.
move TOTPOB TO pow-numeric OF V-TOTPOB.
MOVE TOTSUP TO pow-numeric OF V-TOTSUP.
PERFORM COMPROVA THRU FI-COMPROVA.
EXIT PROGRAM.
Feliz y Próspero Año Nuevo 2.023 !!!
Josber
31 de diciembre de 2022, 18:41
@Socavi, supongo que sí pero, tienen la misma PICTURE en la WORKING que en la tabla, ¿no?, de todas maneras, creo recordar que el listview, trabaja a 4 decimales, le pongas lo que le pongas.
Un salu2.-
fastpho
31 de diciembre de 2022, 22:27
Buenas tardes Fastpho y muchas gracias por tu ayuda. A mi me resulta extraño que sume correctamente la columna(3) de la población, pero no la (4) de Superficie
las variables global creo que estan bien declaradas y no se dónde encontrar el error.
OPEN INPUT MUNICI
invoke Lista 'Clear'
move ' ' to finfic move 0 to cuantos
perform until finfic = 's'
read MUNICI NEXT RECORD AT END MOVE 's' to finfic
not at end
IF MUNICOM = WZMU
INVOKE Lista 'Add' USING 1 1 RETURNING RETORNO
MOVE 'ListItems'(RETORNO) OF Lista TO LINEA
MOVE MUNICOD TO 'Text' (1) OF LINEA
MOVE MUNINOM TO 'Text' (2) OF LINEA
MOVE MUNIPOB TO 'Numeric'(3) OF LINEA
MOVE MUNISUP TO 'Numeric'(4) of linea
PERFORM CALCUL THRU FI-CALCUL
move V-COE TO 'Numeric'(5) OF LINEA
MOVE MUNIALT TO 'Numeric'(6) OF LINEA
MOVE IDESCAT TO 'Numeric'(7) OF LINEA
ADD MUNIPOB TO TOTPOB
ADD MUNISUP TO TOTSUP
add 1 to cuantos
END-IF
end-read
end-perform.
close MUNICI.
move cuantos TO 'Caption' of CmStatic32.
move TOTPOB TO pow-numeric OF V-TOTPOB.
MOVE TOTSUP TO pow-numeric OF V-TOTSUP.
PERFORM COMPROVA THRU FI-COMPROVA.
EXIT PROGRAM.
Feliz y Próspero Año Nuevo 2.023 !!!
@Socavi viendo tu codigo , agrega esta linea para ver que valor tiene TOTSUP
display "Total Superficie : " , TOTSUP
MOVE TOTSUP TO pow-numeric OF V-TOTSUP
Saludos ....
Socavi
1 de enero de 2023, 11:04
Gracias Josber, confirmado, si están bien declaradas (creo),
02 TOTPOB PIC S9(7) COMP-5.
02 TOTSUP PIC S9(5)V99 COMP-5.
Hola Fastpho, realizada la prueba sugerida, la Superficie muestra +0014575, sin separación de coma, pero sigue sin mostrarla en V-TOTSUP., Muchas gracias a ambos.
Kuk
1 de enero de 2023, 15:50
@Socavi, estás seguro que no se trata de un problema de muestreo del control? Estos componentes, incluído el V-TOTSUP los tienes en un CmFrame? Muevele un 0 tal cual al principio a ver si se ve, si no, al final del tratamiento, un simple MOVE 0 TO POW-NUMERIC OF V-TOTSUPA ver qué tal
Socavi
1 de enero de 2023, 16:38
Hola Kuk, puesta en practica tu sugerencia, no pasa el valor 0, y debería porque la variable, esta declarada en la Working-storage como
01 VARIABLES GLOBAL.
02 TOTPOB PIC S9(7) COMP-5.
02 TOTSUP PIC S9(5)V99 COMP-5.
Kuk
2 de enero de 2023, 11:38
@Socavi, la cuestión no es el valor sino la posición, el orden de capas. Me parece que el control que tengas con el nombre V-TOTSUP (imagino que es un CmStatic) se mete por detrás del CmFrame.
Haz lo siguiente, añade esta líne en tu código al final del tratamiento, después de moverle el 0
INVOKE V-TOTSUP "ZOrder" USING 0
Socavi
2 de enero de 2023, 13:15
Buenos días Kuk, tampoco hace nada, es curioso, que el display que sugirio el amigo Fastpho da la suma correcta de la superficie, pero no la 'coloca en el lugar prevísto, cosa rara, pero es lo que hay, lo seguire intentando.
Kuk
2 de enero de 2023, 13:38
@Socavi, definitivamente se trata de un problema de muestreo del componente. Algo se coloca mal, el control se esconde debajo de un otro o algo así
fastpho
2 de enero de 2023, 19:59
Buenos días Kuk, tampoco hace nada, es curioso, que el display que sugirio el amigo Fastpho da la suma correcta de la superficie, pero no la 'coloca en el lugar prevísto, cosa rara, pero es lo que hay, lo seguire intentando.
Hola @Socavi, parace ser un problema de diseño , manda un pantallazo del Editor del Form , a ver donde
esta el control en cuestion (V-TOTSUP) y si podes un pantallazo de las propiedades del control (V-TOTSUP) :flipa:
, me imagino que esta visible ???? ( como te indique en el post #2 (https://www.cobolforo.es/usertag.php?do=list&action=hash&hash=2) )
Saludos ...
Socavi
3 de enero de 2023, 09:13
Hola Fastpho, acompaño pantallas solicitadas, si necesitas algo mas, dimelo por favor.
849850
Josber
3 de enero de 2023, 10:49
@Socavi, en el modo de edición del form, si pulsas F5, ¿el control se ve o no?
Un salu2.-
Socavi
4 de enero de 2023, 11:00
Hola Josber, buenos días.
Al pulsar F5 en modo edición, no se ve nada
Josber
4 de enero de 2023, 11:24
@Socavi, ¿No se ve nada que es?, ¿Qué no ves lo que se tiene que ver?, ¿Qué no hace nada?, ...
Ten en cuenta que F5 es una previsualización de cómo va a quedar el Form, si no hace nada, pulsa con el botón derecho en cualquier sitio del Form en el que no haya nada, (ni imágenes, ni controles), y pulsa en "Preview", a ver si se ve lo que debe de verse. Porque tú, en modo edición, lo ves todo, incluidos los controles que estén ocultos.
Socavi
4 de enero de 2023, 19:26
buenas tardes Josber, al presionar F5 sale esta imagen. 854
Josber
4 de enero de 2023, 19:35
@Socavi, ¿Me puedes enviar el form que le dé un vistazo", a ver si así hay más suerte
Un salu2.-
Josber
5 de enero de 2023, 14:01
@Socavi,
El problema, lo tienes en que el control, tiene desmarcada la propiedad "Visible", una vez marcada, sin problemas
Tienes que darle con el botón derecho al control, luego Properties, Pestaña Common y, ahí veras la opción Visible, la marcas y ya está. Esa opción es para que cuando cargas un form, de entrada, al inicio, se vea o no el elemento deseado.
En caso de que lo quieras hacer visible por programa, sería
MOVE 1 TO "Visible" OF V-TOTSUP.
(0 para invisible, 1 para visible)
Un salu2.-
855
856
Socavi
5 de enero de 2023, 17:51
Muchas gracias Josber, ni se me habría ocurrido la verdad es que utilizo bastante éste tipo de sumas y nunca me habia encontrado hasta ahora con el problema.
todo ok. gracias.
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.