Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Pasar variable por intervalos en tabla de datos (https://www.clubdelphi.com/foros/showthread.php?t=91835)

jonharchival 10-05-2017 13:59:10

Pasar variable por intervalos en tabla de datos
 
Buenas tardes. En los listados de la empresa tengo declarada una variable “Descuento” la cual quiero comparar con los intervalos de una tabla de Rango de Comisiones y que me devuelva el porcentaje de Comisión correspondiente. Pero siempre me devuelve el primer valor del campo ¿como puedo solucionarlo?

Casimiro Notevi 10-05-2017 14:42:01

Pon aquí la estructura de la tabla, y un ejemplo de lo que haces y lo que hay que conseguir que haga.

jonharchival 11-05-2017 11:20:22

Desde Hasta Comisión

0 % 0 % 25 %
0,01 % 10 % 21 %
10,01 % 20 % 18,5 %
20,01 % 30 % 16 %
30,01 % 35 % 14 %
35,01 % 40 % 12 %
40,01 % 45 % 10 %
45,01 % 47,5 % 9 %
47,51 % 50 % 8 %
50,01 % 52,5 % 7 %
52,51 % 55 % 6 %
55,01 % 57 % 5 %
57,01 % 58 % 3 %
58,01 % 59 % 2 %
59,01 % 60 % 1 %
60,01 % 100 % 0 %

Dada esta tabla de datos, tenemos que hallar en que rango se encuentra nuestra variable “Descuento”. Una vez conocemos el rango, debe devolvernos el porcentaje de “Comisión” correspondiente

Ñuño Martínez 11-05-2017 11:27:09

Código SQL [-]
SELECT Comision
  FROM TablaComisiones
 WHERE Desde >= :descuento: AND :descuento: >= Hasta;

manelb 11-05-2017 12:04:19

Otra posibilidad un poquito mas elaborada:

Código SQL [-]
SELECT first 1 comision FROM PROVA
where :valor between Desde and hasta
order by desde

Esta opción te permite, en el momento de crear la tabla de comisiones y rangos, no tener que poner decimales, con lo cual queda más limpio:

Desde Hasta Comisión

0,00 % a 10 % 21 %
10,00 % a 20 % 18,5 %

En la sentencia sql puedes decidir si coges la comisión por abajo o por arriba simplemente cambiando la ordenación:

Código SQL [-]
SELECT first 1 comision FROM PROVA
where :valor between Desde and hasta
order by desde desc

jonharchival 11-05-2017 12:23:20

Muchas gracias compañeros. Voy a implementar las opciones y comento mas tarde los resultados


La franja horaria es GMT +2. Ahora son las 10:24:00.

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