Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   calculos (https://www.clubdelphi.com/foros/showthread.php?t=12420)

buitrago 15-07-2004 19:28:06

calculos
 
Hola.

Hago calculos en FireBird entre una Numeric dividido por un entero, la var que lo recibe tambien es un entero, pero......no me da bien, hay algo que no conozca de estos tipos...alguna experiencia al respecto?.

Gracias

angellvl 16-07-2004 09:46:57

podrias poner un ejemplo concreto?

buitrago 17-07-2004 02:59:13

Aqui va
 
CREATE PROCEDURE PRUEBA_CALCULOS (
P_MONTO NUMERIC(16,2),
P_DIAS INTEGER)
RETURNS (
P_SALIDA INTEGER)
AS
begin
P_SALIDA = :P_MONTO / :P_DIAS;
/* PRUEBA CON :P_MONTO = 1520 Y :P_DIAS = 3 DA 506.66666666666666666666666666667 */
/* PERO YO NECESITO QUE ME DE EL ENTERO, YA QUE VERAS EL PROCEDURE RESPONDE COMO 507, YO LO NECESITO 506*/
suspend;
end

celades 17-07-2004 20:43:58

Hola hay una udf para truncar, que es lo que tu quieres
te doy pero una solucion que no es perfecta pero creo que tirara bien

Código SQL [-]
CREATE PROCEDURE PRUEBA_CALCULOS (
    P_MONTO NUMERIC(16,2),
    P_DIAS INTEGER)
RETURNS (
    P_SALIDA INTEGER)
AS
begin
if (:P_MONTO/:P_DIAS>0) then
P_SALIDA = (:P_MONTO+0.5) / :P_DIAS -1 ;
else
P_SALIDA = (:P_MONTO-0.5) / :P_DIAS +1 ;

/* PRUEBA CON :P_MONTO = 1520 Y :P_DIAS = 3 DA 506.66666666666666666666666666667 */
/* PERO YO NECESITO QUE ME DE EL ENTERO, YA QUE VERAS EL PROCEDURE RESPONDE COMO 507, YO LO NECESITO 506*/
suspend;
end

Saludos

buitrago 18-07-2004 23:47:57

La probaré, gracias
 
Gracias, pensé que habia algo de él mismo, pero las soluciones matematicas tambien me gustan, gracias.

Fer

celades 19-07-2004 12:21:11

Me equivoque al ponertelo

Código SQL [-]
CREATE PROCEDURE PRUEBA_CALCULOS (
    P_MONTO NUMERIC(16,2),
    P_DIAS INTEGER)
RETURNS (
    P_SALIDA INTEGER)
AS
begin
if (:P_MONTO/:P_DIAS>0) then BEGIN
P_SALIDA = (:P_MONTO / :P_DIAS )+0.5;
P_SALIDA =P_SALIDA -1;
END
else BEGIN
P_SALIDA = (:P_MONTO / :P_DIAS) -0.5 ;
P_SALIDA =P_SALIDA +1;
END

/* PRUEBA CON :P_MONTO = 1520 Y :P_DIAS = 3 DA 506.66666666666666666666666666667 */
/* PERO YO NECESITO QUE ME DE EL ENTERO, YA QUE VERAS EL PROCEDURE RESPONDE COMO 507, YO LO NECESITO 506*/
suspend;
end

Saludos

buitrago 20-07-2004 03:23:41

Gracias.
 
Gracias por la respuesta y la preocupación, no se si estoy OffTopic con darte las gracias.
:-> :D

jachguate 20-07-2004 04:42:24

Cita:

Empezado por buitrago
Gracias por la respuesta y la preocupación, no se si estoy OffTopic con darte las gracias.
:-> :D

En el clubdelphi, dar las gracias jamás será off-topic. De hecho, es una práctica comun (y esperada) de los foristas, que indica si una solución planteada (y el tiempo invertido por quienes leen/responden los mensajes) sirvió de algo a quien preguntó. Además, es una garantía, para quienes usan la búsqueda, que la solución encontrada será efectiva.

hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 20:49:06.

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