FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Parametro en un cálculo. Se puede?
Hola amigos del foro. Estoy con un problema y tal vez me pueden ayudar. Estoy utilizando InterBase y Delphi 7. Resulta que escribí una consulta que es una belleza. Muestra el total de ventas y la comision del vendedor.
Es algo así (no coloco la verdadera porque es muy larga). select Vendedor, sum (importe) as Importe from ventas where vendedor =:P_Vendedor group by Vendedor union select 'comision', sum(importe) * 5/100 where vendedor =:P_Vendedor esto arroja el siguiente resultado. ---------------- Venedor importe ----------------- Gonzales 1000 Comision 50 Hasta acá todo bien, cambiando el parámetro P_Vendedor está resuelto. Pero resulta que distintos vendedores tienen distintas comisiones entonces debo reemplazar el 5 por un parámetro. La union debería ser algo así: select 'comision', sum(importe) * :P_Comision /100 where vendedor =:P_Vendedor El problema es que esto parece que está mal porque me da un error. Está bien que esté mal? El Error que aparece es: "Invalid modify request. Array/Blob/Date data types not allowed in arithmetic" Bueno espero que alguien pueda darme una mano. Desde ya muchas gracias. |
#2
|
||||
|
||||
No sé especificamente en Interbase, pero normalmente los parámetros son sólo para valores de campos, como el caso de :p_vendedor.
Se me ocurre que podrías tener una tabla comisiones donde almacenes la comisión de cada vendedor, y enlaces esta tabla en la consulta. Algo como esto:
// Saludos |
#3
|
||||
|
||||
Estoy con lo que dice Román. De hecho yo tengo algunos programas que calculan comisiones y cada vendedor tiene 3 tipos de comisión dependiendo precios de venta... y los tipos de comisión se almacenan en la Tabla Vendedores.
La variante que tengo yo es que cada linea de venta contiene un número del 1..3 para mostrar el tipo de comisión que hay que calcular, claro está el tipo 1 no es igual para todos los vendedores, por eso hay que terminar realizando un encuentro con la tabla Vendederes del tipo que apunta Román. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#4
|
||||
|
||||
Gracias funcinó
En realidad las comisiones ya las tenía en una tabla, entonces hice el Join y listo.
Roman: Si no fueras hombre me enamoraría de vos.......Igual cuidate!!! Jejejee saludos |
#5
|
||||
|
||||
¡Claro! No sé porque pensé en una tabla extra siendo que lo lógico era empezar con un campo en la misma tabla de vendedores a menos que la situación se más compleja como la que describes Marcos.
¡Qué bueno que lo apuntaste! // Saludos |
#6
|
|||
|
|||
hola, aunque el problema está resuelto, la consulta que daba error
es correcta, supongo por el error que te daba, que el problema está en que no le habías asignado el tipo de dato al parámetro:
|
#7
|
||||
|
||||
Muy interesante tu apreciación basti.
Me lo apunto . Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
Muy cierto, estaba yo en un error. Los parámetros sustituyen valores y eso incluye el que originalmente se pedía. Lo que no puede sistituirse son nombres de campos, nombres de tablas, etc.
Lamento la confusión y gracias basti por la aclaración. // Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Integrales (Calculo) | D-MO | Varios | 4 | 07-09-2006 19:52:53 |
calculo en SELECT | mangk | SQL | 6 | 16-08-2005 20:03:55 |
calculo letra NIE | Cabanyaler | Varios | 3 | 29-03-2005 12:19:42 |
Calculo en dbgrid | rmnart | Firebird e Interbase | 4 | 14-06-2004 20:29:19 |
Calculo de Años | jrcosta75 | Varios | 17 | 24-02-2004 22:32:36 |
|