Campo aggregate dependiente de otro en clientdataset
Hola amigos, estoy haciendo la factura de un Terminal de puesto de venta. Es posible colocar en un clientdataset luego de un campo agreggate otro dependiente? por ejemplo: el total es sum(subtotal)(es la suma de todos los precios por sus respectivas cantidades), entonces pongo total2 que es total menos descuento. total2 depende de total. Otro caso es el vuelto es efectivo menos total2.
Cuando hago esto obtengo: Bit index out of range, es decir si dejo un solo aggregate se soluciona. ¿Que puede ser? |
Hola giulichajari.
No podes usar el nombre de campo "total" en la expresión del campo total2, creo que la expresión que correspondería es:
Saludos :) |
Cita:
|
Hola giulichajari.
Cita:
Debería ser: Código:
SUM(efectivo) - (SUM(subtotal) + SUM(descuento)) O expresado de forma mas simple: Código:
SUM(efectivo) - SUM(subtotal) - SUM(descuento) |
Cita:
Por lo que dices no puedo colocar total2 en la expresion del campo vuelto entonces debo repetir todo. |
Cita:
Saludos :) |
ayuda
Cita:
total: sum(subtotal) descuento: sum(subtotal) * sum(pdescuento/100) total2: sum(subtotal) - sum(subtotal) * sum(pdescuento/100) vuelto: sum(efectivo - (sum(subtotal) - sum(subtotal) * sum(pdescuento/100)) Me dice operation cannot mix aggregate value with record variyng value |
Bueno, me gustaría tener información mas detallada de lo que estamos hablando pero así, a simple vista, ya veo un problema.
Supongamos que tu tabla tiene estos datos: Código:
ID SUBTOTAL PDESCUENTO resultan en valor 0 ya que la sumatoria del descuento es igual a 100% y si seguimos agregando filas terminaríamos pagándole al cliente. Sería importante que expliques con detalle de que se trata lo que estas haciendo, los cálculos y resultados que deseas obtener y los campos involucrados en el asunto. Saludos :) |
Cita:
|
Cita:
De donde obtenes el valor del descuento a aplicar, ¿ De la tabla de clientes ? Saludos :) |
Cita:
|
Hola.
Como te dije, no estas dando toda la información necesaria. No sé la organización de tus datos por lo que voy a partir de un supuesto:
En el ClientDataSet relacionado a la tabla VENTAS crea un campo calculado, llamémosle TotalAgg y su propiedad Expresion igual a: 'SUM(SUBTOTAL)'. Agrega un query de los componentes que estes usando. Lo que sigue es para la elección del cliente y el descuento correspondiente:
Sobre estos valores de prueba, Productos: Código:
ID DESCRIPCION PRECIO Código:
ID NOMBRE DESCUENTO 1) Al seleccionar un cliente: 2) No incluí la asignación del código de factura, detalle que no hace al ejemplo y queda la implementación a tu criterio. Por último necesitas otro control para ingresar el pago. Para obtener el vuelto, simplemente basta con restar el total del pago (Vuelto = Pago - Total) y mostrarlo en pantalla. Saludos :) |
Claro yo el clientdataset lo uso como una tabla temporal, al menos asi lo estaba haciendo, porque en mi estructura de datos tengo la tabla producto y ticket, que se relacionan por otra tabla(relacion varios a varios) VENTAS, dado que un producto puede aparecer en varios ticket y un ticket puede contener varios productos.
Pero voy a intentar tu modelo. Saludos :) |
La franja horaria es GMT +2. Ahora son las 11:18:37. |
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