Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 02-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

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:
Código SQL [-]
CREATE TABLE VENTAS (
    ID           INTEGER NOT NULL,
    COD_FACT     VARCHAR(10) NOT NULL,
    PRODUCTO_ID  INTEGER,
    CANTIDAD     INTEGER NOT NULL,
    SUBTOTAL     NUMERIC(18,8),
    FECHA        DATE,
    HORA         TIME
);

CREATE TABLE PRODUCTOS (
    ID           INTEGER NOT NULL,
    DESCRIPCION  VARCHAR(40),
    PRECIO       NUMERIC(15,4) --, ...
);

CREATE TABLE CLIENTES (
    ID           INTEGER NOT NULL,
    NOMBRE       VARCHAR(40),
    DESCUENTO    NUMERIC(15,4) --, ...
);

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:
Código Delphi [-]
(* Realizado en tiempo de ejecución para clarificar las asignaciones *)

procedure TForm1.FormCreate(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE, DESCUENTO');
    SQL.Add('FROM CLIENTES ORDER BY NOMBRE');
    Open;
  end;

  // configuración de los controles data-aware
  with DBEdit1 do  // total bruto
  begin
    DataField := 'TotalAgg';
    DataSource:= DataSource1; // -> ClientDataSet (ventas)
    ReadOnly := True;
  end;

  with DBLookupComboBox1 do // Clientes
  begin
    KeyField  := 'ID';
    ListField := 'NOMBRE';
    ListSource:= DataSource2; // ->IBQuery1 (clientes)
    KeyValue  := '1';
  end;

  with DBEdit2 do  // Descuento
  begin
    DataSource:= DataSource2; // -> (clientes)
    DataField := 'DESCUENTO';
    ReadOnly  := True;
  end;

  Edit1.ReadOnly:= True;  // Total neto
end;

// Actualizar valores de descuento y total
procedure TForm1.IBQuery1AfterScroll(DataSet: TDataSet);
begin
  Edit1.Text:= FormatFloat('$0.00', CDS1TotalAgg.Value - CDS1TotalAgg.Value *
    IBQuery1.FieldByName('DESCUENTO').Value / 100);
end;

Sobre estos valores de prueba,
Productos:
Código:
ID	DESCRIPCION	PRECIO
1	CAFE	        60
2	LECHE	         5
3	AZUCAR	        10
4	MERMELADA	29
Clientes:
Código:
ID	NOMBRE	           DESCUENTO
0	CONSUMIDOR FINAL    0   (posición 0 siempre para C. F.)
1	JUAN PEREZ	   15
2	PABLO GOMEZ	   15
3	ANA FERNANDEZ	   18
El resultado inicial:
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-03-2015 a las 12:36:41.
Responder Con Cita
 



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
Campo aggregate ClientDataSet en runtime Dclase Conexión con bases de datos 6 14-02-2014 13:17:25
buscar registros de un ClientDataSet a otro clientDataSet novato_erick Conexión con bases de datos 2 02-02-2013 20:48:09
TClientDataSet + Campo Tipo Aggregate mjjj Varios 0 11-08-2012 00:36:07
Asignar el valor de un campo aggregate a un campo de la base TrUnkS Conexión con bases de datos 1 23-02-2010 05:17:42
Copiar Campos de un ClientDataSet a Otro linsua Conexión con bases de datos 4 06-11-2003 21:25:00


La franja horaria es GMT +2. Ahora son las 07:05:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi