Ir al contenido


Foto

Formato


  • Por favor identifícate para responder
4 respuestas en este tema

#1 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 11 junio 2009 - 04:54

Salud2 a todos
pregunta como puedo formatear los campos que se llaman pago ???
digo lo ideal seria redondearlos pero la funcion
"ROUND(valor,decimales)"

NO ME FURULA



sql
  1. SELECT
  2. cuenta.folio,
  3. cuenta.no_credito,
  4. cuenta.nombre,
  5. cuenta.domicilio,
  6. cuenta.colonia,
  7. cuenta.poblacion,
  8. cuenta.ciudad,
  9. cuenta.cp,
  10. saldo.saldo AS suerte,
  11. IF( saldo.saldo > 999.99,FORMAT(saldo.saldo * 1.35,2),FORMAT(saldo.saldo+400,2)) AS deuda,
  12. curdate() AS HOY,
  13. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.5,(saldo.saldo+400)*.05) AS pago1,
  14. (curdate() + INTERVAL 7 DAY) AS Fpago1,
  15. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago2,
  16. (curdate() + INTERVAL 37 DAY) AS Fpago2,
  17. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago3,
  18. (curdate() + INTERVAL 67 DAY) AS Fpago3,
  19. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago4,
  20. (curdate() + INTERVAL 97 DAY) AS Fpago4,
  21. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago5,
  22. (curdate() + INTERVAL 127 DAY) AS Fpago5,
  23. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago6,
  24. (curdate() + INTERVAL 157 DAY) AS Fpago6,
  25. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago7,
  26. (curdate() + INTERVAL 187 DAY) AS Fpago7,
  27. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago8,
  28. (curdate() + INTERVAL 217 DAY) AS Fpago8,
  29. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago9,
  30. (curdate() + INTERVAL 247 DAY) AS Fpago9,
  31. IF( saldo.saldo > 999.99,(saldo.saldo * 1.35)*0.055555,(saldo.saldo+400)*0.5) AS pago10,
  32. (curdate() + INTERVAL 2777 DAY) AS Fpago10
  33. FROM
  34. saldo
  35. INNER JOIN cuenta ON cuenta.id_cuenta = saldo.id_cuenta
  36. WHERE
  37. cuenta.folio =  '151051656'
  38. ORDER BY
  39. saldo.id_saldo DESC



o como podrí­a ocupar el valor que se genero y que se llama deuda ??
lo podria ocupar o tengo que crear una tabla temporal ???

NOTA esto es para un reporte en RaveRepots



  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 11 junio 2009 - 05:44

Hola
Perdona amigo, seguro hoy estoy lento, pero no entiendo nada. :D :p
Quieres usar Round pero no puedes?
Me lo explicas como para novato?
Saludos
  • 0

#3 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 12 junio 2009 - 08:33

ha ok
papas dijo el de los churros

hay te va

el el despacho necesitan imprimir un reporte tipo estado de cuenta con una tabla de amortizacion de la deuda

obiamente le tengo que agregar los gastos de cobranza que se generan a la suerte principal ( la suerte principal es el saldo inicial ) por eso el IF
si la suerte principal es mayor a 999.99 pesos se le tiene que agregar un 35 %
de lo contrario solo cargarle 400 pesos,
el primero pago tiene que ser del 50 % de la deuda ( ya con los gastos de cobranza
y los siguientes 9 de el resto dividido entre nueve
hay es donde viene el problema por que me calcula montos con 4 cifras decimales :s
trate de usar la funciona ROUND que asegun mis bastos ( huy si ) conocimientos de Mysql es para redondear cifras ( obiamente el redonde deve de ser para arriva )
o la otra opcion es la de usar la funcion FORMAT pero esta me haria perder un promedio de 6 centavos por cada cuenta que me cerraran ( ya lo hable con el patron y me dijo "si pierdo 6 centavos por operacion te los voy a descontar a ti wey" )
asi que hay esta el detalle necesesito usar ROUND para poder hacer el redondeo

o en todo caso si ya calcule la deuda ( el resultado de suerte principal mas gastos )
poder trabajar con esa cifra para dividirla en lo que sea necesario que seria
primero en 2 para el primer pago ( *0.5 seria la operacion )
y los subsecuentes en mmmm 18 me parece ( *0.222222 seria la operacion )

HELP ME pls
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 12 junio 2009 - 08:44

Si estas utilizando RaveReport podrias utilizar una funcion de formateo a nivel de presentacion en el campo, y no sacarlo redondeado desde la BD
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 12 junio 2009 - 09:02

Hola

Porque no mejor usas campos calculados y te evitas meter esos if en tu query.

Usa este query



sql
  1. SELECT cuenta.folio, cuenta.no_credito,cuenta.nombre,cuenta.domicilio,
  2. cuenta.colonia,cuenta.poblacion,cuenta.ciudad,cuenta.cp, saldo.saldo AS suerte FROM saldo
  3. INNER JOIN cuenta ON cuenta.id_cuenta = saldo.id_cuenta
  4. WHERE cuenta.folio =  '151051656'
  5. ORDER BY saldo.id_saldo DESC



Generas los campos calculados en tu componente y en el evento OnCalcFields haces esto



delphi
  1. procedure TForm1.IBQuery1CalcFields(DataSet: TDataSet);
  2. begin
  3. if IBQuery1Saldo.Value > 999.99 then begin
  4.     IBQuery1Deuda.Value :=  IBQuery1Saldo.Value * 1.35;
  5. end
  6. else begin
  7.     IBQuery1Deuda.Value :=  IBQuery1Saldo.Value + 400;
  8. end;
  9. IBQuery1Hoy.Value := Now;
  10.  
  11. if IBQuery1Saldo.Value > 999.99 then begin
  12.     IBQuery1Pago1.Value :=  (IBQuery1Saldo.Value * 1.35) * 0.5;
  13. end
  14. else begin
  15.     IBQuery1Pago1.Value :=  (IBQuery1Saldo.Value + 400) * 0.5;
  16. end;
  17. IBQuery1FPago1.Value := Now + 7;
  18. end;



En mi ejemplo yo he agregado 4 campos calculados

Deuda, Pago1 del tipo Currency
Hoy, FPago1 del tipo Date

En la imagen que te adjunto te muestro los datos que se ven, estoy usando Firebird, pero de cualquier forma debe de funcionar para cualquier dataset.

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.