![]() |
Suma de un campo
Existe alguna función que sume todos los valores de un campo numérico de una tabla y me arroge el resultado?
Gracias, saludos. Silvio.- |
Cita:
Saludos |
|
Cita:
|
Suma de un campo
Estoy utilizando Paradox 7, con el BDE, y creo que esa funcion no la tiene, me parece...
Saben si alguna otra? Gracias. Silvio.- |
Pues el Local SQL (que es lo que usa el BDE) sí que incorpora el SUM (de hecho, cualquier motor de bases de datos que se precie mínimamente lo incorpora, es casi básico)
Quizás es que no lo estás haciendo correctamente Por qué no explicas que estás haciendo exactamente? |
Suma de un campo
Lo que quiero hacer es que cuando cargo el detalle de una factura (Tabla Detproducto), me vaya sumando el total de cada producto en otro campo que pertenece a la tabla Consumos, que seria el total de la factura.
Me explico?, estoy trabajando con el BDE con tablas Paradox 7, en Delphi 5. Muchas gracias. Silvio.- |
Lo siento silviodp, quizás estoy algo espeso, pero no termino de entenderte
Por que no miras de ponernos la estructura de las tablas y la relación que hay entre ellas? A ver si así lo entiendo mejor |
Suma de un campo
Ok, no hay problema, la estructura de las tablas es la siguiente:
TblConsumo: IDConsumo (Numerico) Facturan (N) Fecha (Date) Seccion (N) Vehiculo (N) Observacion (Memo) Totalfactu (N) TblDetproducto: (tabla detalle, es el detalle de la factura cargada, donde se cargan los productos, y se calcula el precio y el iva de cada uno, segun la cantidad) Consumo (N) IDDetal (N) Producto (Alpha) Cantidad (N) Precunit (N) Ivaunit (N) Precneto (N) Netoiva (N) Precfinal (N) Las dos tablas están relacionadas por la relación Maestro-Detalle mediante el campo IDConsumo en la primera (que es la Maestro) y Consumo de la segunda (Detalle). Y bueno, a medida que voy cargando los productos en la tabla Detalle, quiero que me vaya Sumando en el campo Totalfactu de la Maestro el precio de cada producto cargado (es decir del campo Precfinal), que es el precio final de la factura... Yo lo estoy haciendo así: en el boton Grabar del form que me permite cargar un Producto Código:
procedure TForm16.GrabarClick(Sender: TObject); Código:
procedure TModuloDatos.TblDetproductoAfterPost(DataSet: TDataSet); Haber si me pueden dar una idea. Espero haber sido mas claro. Haaa, me olvidaba uso Paradox 7, y trabajo con Delphi 5. Gracias. Silvio.- |
Vale, ahora sí lo entiendo. Puedes hacer una cosa así:
En el AfterPost (que no BeforePost) puedes hacer..... Donde Table2 será tu tabla maestra Espero que te sirva |
Suma de un campo
Cbrrr:
Mirando el código que me escribiste,yo lo traté de hacer de ésta forma Inserté en el Modulo de datos una Query, que se llama Consulta1, en su propiedad SQL escribi lo siguiente: Código:
select sum(Precfinal) As Suma Código:
procedure TModuloDatos.TblDetproductoAfterPost(DataSet: TDataSet); Igual antes probé con tu código pero no me ejecuta el programa ya que me dice que 'No puedo asignar la base de datos porque es de sólo lectura (o algo así) a Q.database:=DB Control (que es el nombre de mi base) |
se supone que precfinal = Cantidad*Precunit, no?
Pues bien, a ese SQL está algo "mal" 1.- Lo sobra la unión (join) con la tabla maestra (teniendo el campo por el que buscar en la tabla detalle, es una tontería consumir recursos para hacer una join) 2.- Al quitar la join, le falta un parámetro, que es Consumo del cual quieres calcular la suma, sino te lo calculará de todo (cláusula where) por lo que te podría quedar algo así: y desde código hacer algo así: Consejo: acostúmbrate a no usar variables de tipo Variant cuando sabes, de entrada, el tipo de dato que será Consejo2: dentro de un mismo formulario/módulo de datos, no hace falta que hagas referencia a éste Espero que te sirva |
Suma de un campo
Muchas gracias Cbrrr, anduvo perfecto!!!, lo unico que no me reconoce es cuando defino x como Float, tuve que definirla como Currency.
Saludos. Silvio.- |
Perdón, sí, estaba yo pensando en bases de datos. El Float debería haber sido un Real (o un Currency como tu dices)
|
La franja horaria es GMT +2. Ahora son las 20:36:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi