Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como sumar un campo entero y un real (https://www.clubdelphi.com/foros/showthread.php?t=44038)

Maury Manosalva 26-05-2007 20:26:47

Como sumar un campo entero y un real
 
Hola a todos, tengo la siguiente pregunta:

como puedo hacer la suma de un numero que es entero y otro que es real, explico lo que estoy hacendo, genero una consulta SQL y el valor lo estos llevando con
Código Delphi [-]
 totcanent := (DMDatos.qryConsultas.FieldValues['Cantidades']);
en las sumas de los enteros funciona perfecto, pero tengo un campo que es decimal(MySQL), en Delphi lo defino como real, y cuando se realiza la suma de los dos (entero y real) me suma mal, es decir tengo un numero entero 10, y un numero real 50.010 los sumo y me quedan 50.020, cuando deberia quedar 60.010.

Que estoy haciendo mal, la verdad le he dado muchas vueltas y no he encontrado una solución que me sirva.

Mil Gracias

Maury

xEsk 26-05-2007 21:29:56

Quien es q no te suma bien, el Delphi o el gestor de base de datos?

Porque he hecho una prueba y el Delphi suma bien, xD

Código Delphi [-]
var
  n1: Integer;
  n2: Real;
  r: Real;
begin
  n1:=10;
  n2:=50.010;
  r:=n1 + n2;
  ShowMessage(floattostr(r)); // r = 60,01

Maury Manosalva 31-05-2007 19:41:14

Sigo con mi problema, aca paso mi codigo
 
Gracias por ayudarme.

Código Delphi [-]
 
Procedure calculartotales();
Var consulta : String;
var totcosent, totcanent : integer;
var totcosentf, totcanentf : real;
var totalcosto, totalcantidad : real;
begin
totcosent := 0;
totcanent := 0;
totcosentf := 0;
totcanentf := 0;
//Inicio Calculo de Totales Entrada de Productos
 try
 with DMDatos.QryConsultas do
   begin
   close;
   SQL.Clear;
   consulta := 'SELECT sum(canproducto)as cantidades, sum(canproducto*valproducto) as totales FROM tabdetentrpro t where t.identrada = '+chr(39)+frmEntradas.txtPrimaryKey.Text+char(39);
   SQL.Add(consulta);
   Open;
   frmEntradas.txtTotCanPro.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtCosTotPro.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   frmEntradas.txtTotGenCanPro.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtTotGenCosPro.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   totcanent := (DMDatos.qryConsultas.FieldValues['Cantidades']);
   totcosent := (DMDatos.qryConsultas.FieldValues['totales']);
   end;
  except
   begin
   frmEntradas.txtTotCanPro.Text := '0';
   frmEntradas.txtCosTotPro.Text := '0';
   frmEntradas.txtTotGenCanPro.Text := '0';
   frmEntradas.txtTotGenCosPro.Text := '0';
   end;
  end;
//Fin Calculo de Totales Entradas de Productos
//Inicio Calculo de Totales de Entradas de Material
try
 with DMDatos.QryConsultas do
   begin
   close;
   SQL.Clear;
   consulta := 'SELECT sum(pesmaterial)as peso, sum(pesmaterial*cosmaterial) as totales FROM tabdetentrmat t where t.identrada = '+chr(39)+frmEntradas.txtPrimaryKey.Text+char(39);
   SQL.Add(consulta);
   Open;
   frmEntradas.txtTotCanMat.Text := FormatFloat('#,#.#',DMDatos.qryConsultas.FieldValues['Peso']);
   frmEntradas.txtCosTotMat.Text := FormatFloat('#,#.#',DMDatos.qryConsultas.FieldValues['totales']);
   frmEntradas.txtTotGenCanMat.Text := FormatFloat('#,#.#',DMDatos.qryConsultas.FieldValues['Peso']);
   frmEntradas.txtTotGenCosMat.Text := FormatFloat('#,#.#',DMDatos.qryConsultas.FieldValues['totales']);
   totcanentf := (DMDatos.qryConsultas.FieldValues['Peso']);
   totcosentf := (DMDatos.qryConsultas.FieldValues['totales']);
   end;
  except
   begin
   frmEntradas.txtTotCanMat.Text := '0';
   frmEntradas.txtCosTotMat.Text := '0';
   frmEntradas.txtTotGenCanMat.Text := '0';
   frmEntradas.txtTotGenCosMat.Text := '0';
   end;
  end;
//Fin Calculo de Totales Entradas de Material
//Inicio Calculo de Totales de Entradas de Piedras
try
 with DMDatos.QryConsultas do
   begin
   close;
   SQL.Clear;
   consulta := 'SELECT sum(canPiedra)as cantidades, sum(canPiedra*CosPiedra) as totales FROM tabdetentrpie t where t.identrada = '+chr(39)+frmEntradas.txtPrimaryKey.Text+char(39);
   SQL.Add(consulta);
   Open;
   frmEntradas.txtTotCanPie.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtCosTotPie.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   frmEntradas.txtTotGenCanPie.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtTotGenCosPie.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   totcanent := totcanent + (DMDatos.qryConsultas.FieldValues['Cantidades']);
   totcosent := totcosent + (DMDatos.qryConsultas.FieldValues['totales']);
   end;
  except
   begin
   frmEntradas.txtTotCanPie.Text := '0';
   frmEntradas.txtCosTotPie.Text := '0';
   frmEntradas.txtTotGenCanPie.Text := '0';
   frmEntradas.txtTotGenCosPie.Text := '0';
   end;
  end;
 //Fin Calculo de Totales Entradas de Piedras
//Inicio Calculo de Totales de Entradas de Insumos
try
 with DMDatos.QryConsultas do
   begin
   close;
   SQL.Clear;
   consulta := 'SELECT sum(canInsumo)as cantidades, sum(canInsumo*CosInsumo) as totales FROM tabdetentrins t where t.identrada = '+chr(39)+frmEntradas.txtPrimaryKey.Text+char(39);
   SQL.Add(consulta);
   Open;
   frmEntradas.txtTotCanIns.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtCosTotIns.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   frmEntradas.txtTotGenCanIns.Text := IntToStr(DMDatos.qryConsultas.FieldValues['Cantidades']);
   frmEntradas.txtTotGenCosIns.Text := IntToStr(DMDatos.qryConsultas.FieldValues['totales']);
   totcanent := totcanent + (DMDatos.qryConsultas.FieldValues['Cantidades']);
   totcosent := totcosent + (DMDatos.qryConsultas.FieldValues['totales']);
   end;
  except
   begin
   frmEntradas.txtTotCanIns.Text := '0';
   frmEntradas.txtCosTotIns.Text := '0';
   frmEntradas.txtTotGenCanIns.Text := '0';
   frmEntradas.txtTotGenCosIns.Text := '0';
   end;
 end;
  totalcosto := totcosent + totcosentf;
  totalcantidad := totcanent + totcanentf;
 frmEntradas.txtTotCanEnt.Text := FormatFloat('#,#.#',totalcantidad);
 frmEntradas.txtTotCosEnt.Text := FormatFloat('#,#.#',totalcosto);

me sigue sacando el mismo calculo mal, con los enteros funciona bien, pero al sumar los reales, nada. gracias.

aca hago la bendita suma

totalcosto := totcosent + totcosentf;
totalcantidad := totcanent + totcanentf;

Maury


La franja horaria es GMT +2. Ahora son las 14:12:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi