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 02-01-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
estadistica de ventas

Primero que nada, Feliz año para todos!!!
Quiero calcular las estadisticas de ventas por varios parametros como, los mas vendidos, o los los vendidos en los ultimos 10 dias o productos sin salida, etc. para la seleccion utilizaria un combobox.
Las tablas serian, factura:
Cod_fact
Cod_cliente
Fecha

detalle de factura:
Cod_prodser
descripcion
importe
cantidad

Utilizando Delphi7 y SQL, haria algo asi.

Código Delphi [-]
procedure TForm13.Button1Click(Sender: TObject);
begin
Query1.Close;
  Query1.SQL.Text:= 'SELECT * FROM detfactura.DB ';
  Query1.SQL.Add('inner join factura.DB on Cod_fact = Cod_prodser');
if combobox2.Text = 'Más vendidos' then
begin
  Query1.SQL.Add('WHERE  )
  Query1.SQL.ADD(' ORDER BY Cantidad ASC');
  Query1.Active:=true;
end;
Query1.Open;
end;

En la consulta del WHERE no se que hacer, deberia seleccionar el codigo del producto y que sume la cantidad? pero lo tiene que hacer en todas las facturas, no?
no se como realizarlo, creo que estoy medio encarado pero no tengo tanto conocimiento en SQL. Calculando la primera creo que podria sacar las demas consultas.
Agradesco cualquier ayuda.
Responder Con Cita
  #2  
Antiguo 02-01-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me parece que tienes que hacer una distincion de los productos para que no se te dupliquen en la factura.
Ademas tendras que hacer la suma de la cantidad por medio de un group by ya que necesitaras establecer el grupo.
Algo asi:
Código Delphi [-]
procedure TForm13.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Text:= 'SELECT DISTINCT Cod_prodser,descripcion, importe, Sum(Cantidad) as Cantidad_Total  FROM detfactura.DB ' +
                    ' inner join factura.DB on Cod_fact = Cod_prodser ';
if combobox2.Text = 'Más vendidos' then
begin
  Query1.SQL.Add( 'WHERE factura.Fecha >= :Fecha1 and factura.Fecha <= :Fecha2' +
                    ' Group by Cod_prodser,descripcion, importe '+
                    ' ORDER BY detfactura.Cantidad ASC ');
  Query1.Params[0].Value:= TuDato1;
  Query1.Params[1].Value:= TuDato2;
  Query1.Active:=true;
end;
Query1.Close;
end;
A ver si te sirve de ejemplo o por lo menos para pasar el rato.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 02-01-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por DOS Ver Mensaje
pero no tengo tanto conocimiento en SQL....
Lo que te puedo aconsejar en este caso es adquiere mas conocimientos de SQL, así tendrás las herramientas necesarias para solucionar tus problemas...

http://www.w3schools.com/sql/default.asp
http://es.wikipedia.org/wiki/SQL

Una variante al código de Caral podría ser:

Código Delphi [-]
procedure TForm13.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Text:= 'SELECT DISTINCT Cod_prodser,descripcion, importe, Sum(Cantidad) as Cantidad_Total  FROM detfactura.DB ' +
                    ' inner join factura.DB on Cod_fact = Cod_prodser ';
if combobox2.Text = 'Más vendidos' then
begin
  Query1.SQL.Add( 'WHERE factura.Fecha >= :Fecha1 and factura.Fecha <= :Fecha2' +
                    ' Group by Cod_prodser,descripcion, importe '+
                    'HAVING SUM(Cantidad)>50'+  //Aquí le estas indicando que te traiga todos los productos cuya cantida  (Suma) sea mayor a 50, este valor lo puedes parametrizar al igual qu 
                    ' ORDER BY detfactura.Cantidad ASC ');
  
  Query1.Params[0].Value:= TuDato1;
  Query1.Params[1].Value:= TuDato2;
  Query1.Active:=true;
end;
Query1.Close;
end;

Saludos cordiales
Responder Con Cita
  #4  
Antiguo 02-01-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 13
DOS Va por buen camino
Muchas gracias a ambos, hoy cuando llegue a casa veo si lo puedo implementar.
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
Estadística de mis 1000 post newtron La Taberna 29 14-12-2011 09:36:11
Estadística mensajes clubdelphi Casimiro Notevi La Taberna 13 27-07-2007 11:10:35
Algo para la estadística egostar Noticias 7 30-03-2007 19:41:56
barras de estadistica alfil123 Gráficos 1 18-12-2005 11:37:20
Estadistica programas utilizados Descendents Varios 0 13-02-2004 11:22:27


La franja horaria es GMT +2. Ahora son las 16:19:03.


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