Jump to content


Photo

Calcular % de una ganacia en una tabla


  • Please log in to reply
6 replies to this topic

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 26 January 2012 - 07:21 AM

hola amigo espero que me entiendan con esta duda,

Bueno yo estoy interesado en hacer un formulario donde registro los productos que compro, en lo cuales tengos 4 campos o edits
que son:

IDproducto
nombreproducto
preciocompra
porcientocompra
preciototal

ahora en preciocompra yo quiero aplicarle el porciento que yo quiero ganarme en ese producto, por la cual cree ese campo para poner el % y luego calcularlo.

mi pregunta como lo puedo hacer, yo intente hacerlo de una manera no profesional, y solo funcionaba de cantidades de 10 en adelante, pero si le ponia menos de 10 por ejemplo 8, me da error.

bueno el codigo era este donde sacaba el porciento de ganancia de compra :


delphi
  1. Var
  2. S:string;
  3. dat,datos,total:real;
  4. begin
  5. dat:=strTofloatdef(Edit2.text,0);
  6. datos:=strTofloatdef(Edit3.text,0);
  7. s:='0.'+floatTostr(datos);
  8. total:=dat*strTofloat(s);
  9. DBEdit4.Text:=floatTostr(total);





  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 26 January 2012 - 09:56 AM



delphi
  1. var
  2.   PC,PT,PO: Double;
  3. begin
  4.   PC := Table1PRECIOCOMPRA.AsFloat; //Precio Compra
  5.   PO := Tabel1PORCIENTO.AsFloat; //Por ciento
  6.   PT := PC * (((PC * PO) / 100) + 1); // Precio de compra mas ganancia
  7. end;


  • 0

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 26 January 2012 - 05:41 PM

bueno no entendi lo que el codigo expuesto. porque el +1
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 26 January 2012 - 06:19 PM

bueno no entendi lo que el codigo expuesto. porque el +1


El 1 es para obtener el factor por el cual se multiplicará el precio.

Aunque tiene un pequeño errorcito, hay que cambiar esto:



delphi
  1. PT := PC * (((PC * PO) / 100) + 1); // Precio de compra mas ganancia



por esto



delphi
  1. PT := PC * ( (PO / 100) + 1); // Precio de compra mas ganancia




Precio = 100
Porcentaje = 20
Calculo  --> 100 * ( (20 / 100) + 1)  =  100 * ( 0.20 + 1 )  =  100 * 1.20  =  120


Saludos
  • 0

#5 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 27 January 2012 - 07:01 AM

bueno estoy bruto con matematica , donde aprendo hacer eso, la verdad que me quede con la boca abierta. JAJAJA
  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 27 January 2012 - 03:18 PM

bueno estoy bruto con matematica , donde aprendo hacer eso, la verdad que me quede con la boca abierta. JAJAJA


Te la pongo un poco diferente a ver si la agarras.  Observa la siguiente función:


delphi
  1. function PrecioVenta(PrecioCompra, PorcentajeUtilidad: Double): Double;
  2. var
  3.   Utilidad: Double;
  4. begin
  5.   Utilidad := PrecioCompra * (PorcentajeUtilidad / 100);
  6.   Result := PrecioCompra + Utilidad;
  7. end;



Mira un ejemplo del uso de la función, en donde el precio de compra es 200 y el porcentaje de utilidad es  el 20 por ciento.


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3. Showmessage(floattostr(PrecioVenta(200,20))); //Se mostrará 240
  4. end;



Ahora bien, aplicada a tu problema, parece que quieres guardar ese valor en el campo "PrecioTotal", de ser así entonces solo es cuestión de pasarle los parámetros a nuestra función, el procedimiento quedaría:



delphi
  1. procedure CalcularPrecioTotal;
  2. begin
  3.   TuDataset.FieldByName('PrecioTotal').asFloat := PrecioVenta
  4.     (TuDataset.FieldByName('PrecioCompra').asFloat,
  5.     TuDataset.FieldByName('PorcientoCompra').asFloat);
  6. end;



Saludos
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6301 posts
  • LocationArgentina

Posted 03 February 2012 - 07:30 PM

Si el porcentaje se almacenara en forma decimal bastaría con multiplicar el precio por (1 + porcentaje). Por ejemplo:
Precio = 10, porcentaje = 0,18 (18%)
Entonces PrecioConGanancia = 10 * (1 + 0,18) = 10 * 1,18 = 11,8

Lo que en última siempre se resume a algo muy simple:
PrecioGanancia = Precio * (1 + Porcentaje)

Es la forma más directa de obtener un valor incremental en base a porcentaje. ¡La división respecto a 100 puede obviarse!  ;) O más concretamente, para cualquier cálculo de proporcionalidad (o regla de tres, para los que les gusta hablar de "escuela") sólo es necesario conservar dicho factor de proporción y directamente multiplicar.

La ventaja de esta forma es que solo se realizan sumas y multiplicaciones... dos operaciones. Y además, que son las únicas operaciones por definición y efecto que toda máquina efectúa... son extremadamente rápidas a comparación con aplicar sus inversas: restas y división ya que se realizan aplicando sus complementos negados y efectuando, concretamente sumas y multiplicaciones respectivamente. Nos ahorramos unos cuantos ciclos de procesador... que pueden ser aprovechados por el server si en la tabla van a haber miles o millones de registros.  ;)

Ha... por cierto... otra ventaja de hacerlo de esta forma es que posee una mejor precisión numérica y el margen del error relativo y absoluto es menor que sus contrapartes... si es que mi análisis rápido y según recuerdo de la teoría de cálculo numérico son correctos.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.