Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Sumar los productos que corresponden a la factura

Hola gente del foro.... Estoy haciendo un sistema de facturacion. Tengo dos tablas: Facturas(id_factura, numero, totalfactura) Detalle(id_detalle, id_factura, id producto, cantidadproducto, preciounitario, totalproducto). Lo que quiero hacer es: cuando apreto el boton agregar producto, me sume todos los productos q correspoden a esa factura... osea una consulta sql con facturas.id_factura y detalle.id_factura... Gracias....
Responder Con Cita
  #2  
Antiguo 06-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JairoC.

Si no te estoy entendiendo mál, creo que podrías hacer:
Código SQL [-]
SELECT SUM(T1.TOTALPRODUCTO) AS TOTAL
FROM DETALLE T1, FACTURA T2
WHERE T1.ID_FACTURA = T2.ID_FACTURA
O también:
Código SQL [-]
SELECT SUM(T1.TOTALPRODUCTO) AS TOTAL
FROM DETALLE T1
INNER JOIN FACTURA T2 ON T1.ID_FACTURA = T2.ID_FACTURA

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Sumar los productos que corresponden a la factura

Gracias ecfisa... Ahora me sale un error de que no encuentra el ID_DETALLE...
Responder Con Cita
  #4  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Sumar los productos que corresponden a la factura

TE ENVIO EL CODIGO, PARA QUE VEA SI VOY BIEN ENCAMINADO...
Código Delphi [-]
          begin
             try

             //FACTURA_DE_VENTAS

               DM.IBDataSet_FacturasVentasNUMERO.Value:= DM.IBQuery_NumerosNUMERO.Value;//NUMERO DE FACTURA...
               DM.IBDataSet_FacturasVentasCONDICION.Value:=ComboBox_CondicionVenta.Text;
               DM.IBDataSet_FacturasVentasTIPO_FACTURA.Value:=Label_Factura.Caption;
               DM.IBDataSet_FacturasVentasFECHA.Value:=DTPFecha.Date;
         
               IF ComboBox_Comprador.Text ='CLIENTE' THEN
                   DM.IBDataSet_FacturasVentasID_CLIENTE.Value:= DM.IBDataSet_ClientesID_CLIENTE.Value
               ELSE
                   DM.IBDataSet_FacturasVentasID_EMPLEADO.Value:=DM.IBDataset_EmpleadoID_EMPLEADO.Value;
               //DM.IBDataSet_FacturasVentasID_CAJA
               if CheckBox_Reparto.Checked=True then
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='SI'
               else
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='NO';
               DM.IBDataSet_FacturasVentasESTADO.Value:=1;
               DM.IBDataSet_FacturasVentas.Post;
              //DETALLE_VENTAS

               DM.IBDataSet_DetalleVentasESTADO.Value:=1;
               DM.IBDataSet_DetalleVentasID_FAC_V.Value:= DM.IBDataSet_FacturasVentasID_FAC_V.Value;
               DM.ibdataset_detalleventasPRODUCTO.Value:=DBLookupComboBoxAltaProductoFactura.Text;
               DM.IBDataSet_DetalleVentasPRECIO_UNITARIO.Value:=DM.IBDataSet_ProductosPRECIO_UNITARIO.Value;
               DM.IBDataSet_DetalleVentas.Post;
               DM.Transaction.CommitRetaining;
               ShowMessage('Producto agregado.');
               with (DM.IBQuery_DetalleVenta)do
               begin
                  SQL.Clear;
                  SQL.Add('SELECT SUM(T1.TOTAL) AS TOTALP FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 WHERE T1.ID_FAC_V = T2.ID_FAC_V');  
                  // Acá me sale el error...
               end;
               DM.IBDataSet_DetalleVentas.Append;
             except
               DM.IBDataSet_DetalleVentas.Cancel;
               DM.Transaction .RollbackRetaining;
             end;
          end;

Última edición por ecfisa fecha: 07-10-2011 a las 21:12:39. Razón: Etiquetas [delphi] [/delphi]
Responder Con Cita
  #5  
Antiguo 07-10-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
puedes colocar como quedo tu consulta?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tienes un query que se llama IBQuery_DetalleVenta.
Dale doble click y quitale los campos que estan en esa pantalla pequeña.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Gracias!!!! Ahora no sale el error... Cómo hago para guardar el resultado de la suma al campo TOTAL de la tabla FACTURA_DE_VENTAS???
Responder Con Cita
  #8  
Antiguo 07-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JarioC.

Te borré un mensaje por que aparentemente (el código es extenso) contenía el mismo texto que el anterior.
Te ruego que me hagas saber si lo enviaste dos veces por error, así lo borro en forma definitiva o si tenía algún cambio que se me pudiera haber pasado y en ese caso lo restauro.

Muchas gracias.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
lO ENVIE SIN QUERER..PERDON..
Responder Con Cita
  #10  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo.
Tienes un consulta sql que te da el total del query IBQuery_DetalleVenta, por lo tanto este contiene lo que se llama un field.
ESte field es el que necesitas para ingresarlo en donde quieras, un ejemplo:
Quieres que este field este en una variable y luego en donde quieras:
Código Delphi [-]
Var A: Real;
// todo lo demas
// etc......
// la consulta sql:
 with (DM.IBQuery_DetalleVenta)do
               begin
                  SQL.Clear;
                  SQL.Add('SELECT SUM(T1.TOTAL) AS TOTALP FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 WHERE T1.ID_FAC_V = T2.ID_FAC_V');  
             DM.IBQuery_DetalleVenta.Open;
          A:= DM.IBQuery_DetalleVenta.Fields[0].AsFloat; // le das el dato a la variable A.  
               end;
Ahora si, haces lo que quieras con la variable A.
Por ahí anda el asunto.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
No hay caso :-( ... Soy novato en en esto... Lo que quiero hacer es guardar la suma de la consulta SQL.Add('SELECT SUM(T1.TOTAL) AS TOTALP FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 WHERE T1.ID_FAC_V = T2.ID_FAC_V'); en el campo TOTAL de la tabla FACTURAS_DE_VENTAS... Y no se como hacerlo...
Responder Con Cita
  #12  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No es complicado, solamente que no lo tienes claro.
Este dato lo quieres colocar en otra tabla o en la misma?
Recuerda que no estamos al lado tuyo, no sabemos nada, tienes que ser mas especifico.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Ok, le explico bien... Tengo dos tablas: FACTURA_DE_VENTAS (ID_FACTURA, NUMERO, ID_CLIENTE, TOTAL) Y DETALLE_VENTAS (ID_DETALLE, ID_FACTURA, ID PRODUCTO, PRECIO UNITARIO)
Lo que quiero conseguir es: que cuando apreto el boton, me sume los totales de cada producto (CAMPO TOTAL.DETALLE_VENTAS) y a ese resultado me lo guarde en (CAMPO TOTAL.FACTURAS_DE_VENTAS)...
Responder Con Cita
  #14  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lo que quieres hacer se llama UpDate.
Tienes un numero de factura que es la que (por logica) va a contener el total de esa venta, es asi?.....
Ya sabemos que la consulta nos da el total.
Ese total lo vamos a pasar al campo TOTAL.FACTURAS_DE_VENTAS de la MISMA tabla, es asi?....
Bien:

Código Delphi [-]
var Dato: Real; // creamos la variable que contendra el dato
begin
             try

             //FACTURA_DE_VENTAS

               DM.IBDataSet_FacturasVentasNUMERO.Value:= DM.IBQuery_NumerosNUMERO.Value;//NUMERO DE FACTURA...
               DM.IBDataSet_FacturasVentasCONDICION.Value:=ComboBox_CondicionVenta.Text;
               DM.IBDataSet_FacturasVentasTIPO_FACTURA.Value:=Label_Factura.Caption;
               DM.IBDataSet_FacturasVentasFECHA.Value:=DTPFecha.Date;
         
               IF ComboBox_Comprador.Text ='CLIENTE' THEN
                   DM.IBDataSet_FacturasVentasID_CLIENTE.Value:= DM.IBDataSet_ClientesID_CLIENTE.Value
               ELSE
                   DM.IBDataSet_FacturasVentasID_EMPLEADO.Value:=DM.IBDataset_EmpleadoID_EMPLEADO.Value;
               //DM.IBDataSet_FacturasVentasID_CAJA
               if CheckBox_Reparto.Checked=True then
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='SI'
               else
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='NO';
               DM.IBDataSet_FacturasVentasESTADO.Value:=1;
               DM.IBDataSet_FacturasVentas.Post;
              //DETALLE_VENTAS

               DM.IBDataSet_DetalleVentasESTADO.Value:=1;
               DM.IBDataSet_DetalleVentasID_FAC_V.Value:= DM.IBDataSet_FacturasVentasID_FAC_V.Value;
               DM.ibdataset_detalleventasPRODUCTO.Value:=DBLookupComboBoxAltaProductoFactura.Text;
               DM.IBDataSet_DetalleVentasPRECIO_UNITARIO.Value:=DM.IBDataSet_ProductosPRECIO_UNITARIO.Value;
               DM.IBDataSet_DetalleVentas.Post;
               DM.Transaction.CommitRetaining;
               ShowMessage('Producto agregado.');
               with (DM.IBQuery_DetalleVenta)do
               begin
                  SQL.Clear;
                  SQL.Add('SELECT SUM(T1.TOTAL) AS TOTALP FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 WHERE T1.ID_FAC_V = T2.ID_FAC_V');  
               Open;
               end;
              
           // aqui lo hacemos todo
              Dato:= DM.IBQuery_DetalleVenta.Fields[0].AsFloat; // pasamos el valor
              with (DM.IBQuery_DetalleVenta)do  // usamos el mismo query
               begin
              Close;
              // hacemos el update pasandole el dato en el campo que coincida con el numero de factura
              SQL.Text:= 'Update DETALLE_VENTAS set TOTAL.FACTURAS_DE_VENTAS = :Tot where ID_FACTURA = T1.ID_FAC_V'; 
              Params[0].Value:= Dato;
              ExecSQL; // lo ejecutamos
               end;
               
             except
               DM.IBDataSet_DetalleVentas.Cancel;
               DM.Transaction .RollbackRetaining;
             end;
          end;
Si tienes dudas dilo.
Saludos
PD: No se si entiendo bien, tal vez es un insert, solamente se cambia la consulta sql y listo
__________________
Siempre Novato

Última edición por Caral fecha: 07-10-2011 a las 22:43:49.
Responder Con Cita
  #15  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Así es... Me sale un error que dice Column Unknown TOTAL.FACTURAS_DE_VENTAS... Justo acá ExecSQL;
Responder Con Cita
  #16  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
A ver si esta vez bateo mejor.
Código Delphi [-]
var Dato: Real; // creamos la variable que contendra el dato
begin
             try

             //FACTURA_DE_VENTAS

               DM.IBDataSet_FacturasVentasNUMERO.Value:= DM.IBQuery_NumerosNUMERO.Value;//NUMERO DE FACTURA...
               DM.IBDataSet_FacturasVentasCONDICION.Value:=ComboBox_CondicionVenta.Text;
               DM.IBDataSet_FacturasVentasTIPO_FACTURA.Value:=Label_Factura.Caption;
               DM.IBDataSet_FacturasVentasFECHA.Value:=DTPFecha.Date;
         
               IF ComboBox_Comprador.Text ='CLIENTE' THEN
                   DM.IBDataSet_FacturasVentasID_CLIENTE.Value:= DM.IBDataSet_ClientesID_CLIENTE.Value
               ELSE
                   DM.IBDataSet_FacturasVentasID_EMPLEADO.Value:=DM.IBDataset_EmpleadoID_EMPLEADO.Value;
               //DM.IBDataSet_FacturasVentasID_CAJA
               if CheckBox_Reparto.Checked=True then
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='SI'
               else
                  DM.IBDataSet_FacturasVentasREPARTO.Value:='NO';
               DM.IBDataSet_FacturasVentasESTADO.Value:=1;
               DM.IBDataSet_FacturasVentas.Post;
              //DETALLE_VENTAS

               DM.IBDataSet_DetalleVentasESTADO.Value:=1;
               DM.IBDataSet_DetalleVentasID_FAC_V.Value:= DM.IBDataSet_FacturasVentasID_FAC_V.Value;
               DM.ibdataset_detalleventasPRODUCTO.Value:=DBLookupComboBoxAltaProductoFactura.Text;
               DM.IBDataSet_DetalleVentasPRECIO_UNITARIO.Value:=DM.IBDataSet_ProductosPRECIO_UNITARIO.Value;
               DM.IBDataSet_DetalleVentas.Post;
               DM.Transaction.CommitRetaining;
               ShowMessage('Producto agregado.');
               with (DM.IBQuery_DetalleVenta)do
               begin
                  SQL.Clear;
                  SQL.Add('SELECT SUM(T1.TOTAL) AS TOTALP FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 WHERE T1.ID_FAC_V = T2.ID_FAC_V');  
               Open;
               end;
              
           // aqui lo hacemos todo
              Dato:= DM.IBQuery_DetalleVenta.Fields[0].AsFloat; // pasamos el valor
              with (DM.IBQuery_DetalleVenta)do  // usamos el mismo query
               begin
              Close;
              // hacemos el Insert pasandole el dato y el numero de factura a la tabla FACTURAS_DE_VENTAS
              SQL.Text:= 'Insert Into FACTURAS_DE_VENTAS (ID_FACTURA, TOTAL) Values (:Fact, :tot)';
              Params[0].Value:= TU_NUMERO_DE_FACTURA; // no lo se de donde sacas el dato
              Params[1].Value:= Dato; // el valor del total
              ExecSQL; // lo ejecutamos
               end;
               
             except
               DM.IBDataSet_DetalleVentas.Cancel;
               DM.Transaction .RollbackRetaining;
             end;
          end;
Para mi es un insert no un update.
Revisa y trata de entenderlo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 07-10-2011
JairoC JairoC is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 45
Poder: 0
JairoC Va por buen camino
Muchas Gracias!!! Funciono con esta linea SQL.Text:= 'Update FACTURAS_DE_VENTAS set TOTAL = :Tot where ID_FAC_V = ID_FAC_V';
Lo unico que la suma da, por ejemplo: 44,70 y me lo redondea a 45 y así lo guarda...
Responder Con Cita
  #18  
Antiguo 08-10-2011
Avatar de Sapt_86
Sapt_86 Sapt_86 is offline
Registrado
NULL
 
Registrado: oct 2011
Ubicación: Bahia Blanca, Argentina
Posts: 8
Poder: 0
Sapt_86 Va por buen camino
Donde realizas la suma, intenta lo siguiente:

Código SQL [-]
SELECT CAST(SUM(T1.TOTAL) AS DECIMAL(10,2))AS TOTALP
FROM DETALLE_VENTAS T1, FACTURAS_DE_VENTAS T2 
WHERE T1.ID_FAC_V = T2.ID_FAC_V

De todas formas ten cuidado con el redondeo.
Responder Con Cita
  #19  
Antiguo 08-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy interesante lo desconocía.
Buen aporte, gracias.
Saludos
__________________
Siempre Novato
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Factura Electronica Factura-E keys Varios 1 09-11-2010 06:37:46
Clasifica productos cacu OOP 2 17-11-2009 09:31:16
Easter egg en los productos de Microsoft Gabo La Taberna 0 15-10-2007 17:50:47
Fallo Nº Factura y Linea Factura CarmaZone Tablas planas 5 26-05-2005 11:17:19
Reportes de productos maui Impresión 5 07-09-2004 00:03:49


La franja horaria es GMT +2. Ahora son las 04:43:26.


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
Copyright 1996-2007 Club Delphi