https://foro.gambas-es.org/viewtopic.php?f=3&t=5652
-----------------------------------
nore
Lunes, 18 Julio 2016, 03:13

Cómo Sumar (+) Datos De Una Consulta A Bd Que Me Trae Un Arreglo
-----------------------------------
Necesito ayuda por favor:
Estoy trabajando en una aplicación que gestiona una base de datos Mysql. En el formulario "Actividades" se registran los datos de las actividades programadas (día, mes y año de realización, lugar, objetivo, responsable de la act, y el monto previsto para el pago de honorarios) esto es registrado en la bd en la tabla "actividades" con la misma cantidad de campos. La aplicación debe hacer la consulta en la bd y seleccionar solo las actividades del mes  y año seleccionado por el usuario, y sumar los montos para presentar el total en un textbox, pero no se como hacerlo. Hay que considerar que el número de filas que tendrá la selección cambiará constantemente, dependerá del mes seleccionado, además que el usuario irá incorporando nuevas actividades a la programación. Ya se como hacer la consulta sql que me traiga las filas que corresponda a las actividades de ese mes y año, pero no se como sumar los datos del campo "montos" para tener un total.
Imagino que debe ser con un arreglo, pero no se trabajar con ellos :roll: . Agradezco mucho el apoyo ;-)


-----------------------------------
calcena
Lunes, 18 Julio 2016, 08:08

Re: Cómo Sumar (+) Datos De Una Consulta A Bd Que Me Trae Un Arreglo
-----------------------------------
Buenas compañero, yo sin ser especialista en GAMBAS, vamos ni de lejos, sugeriría a revisión de los más profesionales en este ámbito algo asi:

select sum(Montante) from tblActividades where mes=[txtMES] and anyo=[txtAÑO];

esta query te devuelve la suma de ese mes y año y lógicamente siempre será dinámico porque dependerá de los campos introducidos en el formulario.

Que confirmen los compañeros mi teoría.

Saludos.


-----------------------------------
jguardon
Lunes, 18 Julio 2016, 09:59

Re: Cómo Sumar (+) Datos De Una Consulta A Bd Que Me Trae Un Arreglo
-----------------------------------
Efectivamente, tal como comenta calcena, la forma correcta de hacerlo es mediante una consulta SQL, ya que los datos son dinámicos y de esa manera nunca tendrás errores. MYSQL dispone de diversas funciones y operadores para esta labor:

http://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

Todo ello suponiendo que los tipos de los campos de la tabla estén correctamente declarados como FLOAT, DOUBLE, o si quieres resultados exactos usando decimales, usa DECIMAL.

Por otra parte, creo que la estructura de tu base de datos no es correcta, por cuanto que dices que duplicas todos los mismos campos en otra tabla. No sería necesario hacerlo, sino más bien recurrir a tablas relacionadas, consultas compuestas y creación de Vistas para consultas repetitivas. Pero eso requiere de un estudio previo del problema mucho antes de ponerse a escribir una sóla línea de código, que es generalmente donde todo principiante fracasa.

Saludos


-----------------------------------
nore
Lunes, 18 Julio 2016, 16:18

Re: Cómo Sumar (+) Datos De Una Consulta A Bd Que Me Trae Un Arreglo
-----------------------------------
select sum(Montante) from tblActividades where mes=[txtMES] and anyo=[txtAÑO];

Muy bien amigo calcena! esta consulta es perfecta. Ahora como tomo el resultado de la suma y lo coloco en una variable tipo integer? (solo trabajo con montos enteros)


-----------------------------------
calcena
Lunes, 18 Julio 2016, 16:52

Re: Cómo Sumar (+) Datos De Una Consulta A Bd Que Me Trae Un Arreglo
-----------------------------------
Para eso estamos nore, pero como bien te indica jguardon, la optimización de tablas es muy importante, lo que se conoce como normalización de tablas, es decir no puedes repetir datos de una tabla en otra, se debe generar un identificador unico (PK) y éste se debe enlazar en otras tablas (FK).
Todo esto luego a nivel de BD se puede explotar tranquilamente con las clauslas INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JON, OUTER JOIN.
Existen 4 niveles de normalización, y minimo se debe llegar hasta la 3ª forma de normalización, para considerar que una base de datos es consistente y razonable a nivel de estructura.

Si haces esto, tu proyecto (sea en el lenguaje que sea como afrontes el FRONT-END) ganará agilidad, sentido, cohesión de datos, estabilidad, coherencia y consistencia.

Saludos.


