Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ventas por mes (https://www.clubdelphi.com/foros/showthread.php?t=85015)

ecfisa 16-01-2014 23:23:02

Hola Jorge.

Realmente no veo la necesidad de complicarte usando un TStringGrid...

De todos modos te hice esta función que pasa los campos de cualquier TIBQuery sin campos BLOB, a cualquier TStringGrid:
Código Delphi [-]
procedure IBQueryToStringGrid(IBQ: TIBQuery; Grd: TStringGrid);
var
  c,r : Integer;
begin
  Grd.ColCount := IBQ.FieldCount-1;
  Grd.RowCount := IBQ.RecordCount;
  r := 0;
  IBQ.First;
  while not IBQ.Eof do
  begin
    for c:= 0 to IBQ.RecordCount-1 do
      Grd.Cells[Grd.FixedCols+c, Grd.FixedRows+r] := IBQ.Fields[c].AsString;
    IBQ.Next;
    Inc(r);
  end;
end;

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBQueryToStringGrid(IBQuery4, StringGrid1);
end;

Y por favor cuando pongas código Delphi usa las etiquetas [delphi] tu_codigo [/delphi] como te mencionó antes duilioisola.

Saludos :)

Jorge Orozco 21-01-2014 20:53:37

Gracias a todos los que me trataron de ayudar en este caso, pero la verdad lo intente por todos lados y no me funciona. Es decir no puedo obtener las ventas por mes y año de una fecha dada, es decir desde fecha, hasta fecha.

De todos modos mil gracias a todos. Y lo peor de todo es que no me encuentro algo similiar en GOOGLE.

No se donde esta mi problema.

Jorge Orozco 24-01-2014 23:38:48

Quiero agradecer a todos;psque me dieron una luz, para poder resorver mi problema. Ya lo pude resolver. Aqui les dejo el procedimiento por si alguien lo va a nacesitar en algun momento. De nuevo gracias a todos.

Código Delphi [-]
procedure TMovimiento_Pedidos.desglose_articulo_ventas;
var conte, i, c1, fec1, fec2 : integer;
    compras3, estado1, fec0 : string;
    fecha1, fecha2 : string; //TdateTime;
    fe1, fe2 : TDateTime;
    Ano, Mes, Dia : Word;
begin
  estado1 := 'ANULADO';
  fecha1 := datetostr(fechaini.DateTime);
  fecha2:= datetostr(fechafin.DateTime);
  c1 := 0;

  IBQuery4.Close;
  IBQuery4.SQL.Clear;
  IBQuery4.SQL.Add('select count(*) as entradas from ARTICULOS a inner join FACTURADT b on (b.FAARID = a.ARID) '+
                   'inner join FACTURAS c on (c.FAID = b.FAID) and (c.FAESTADO <> '''+estado1+''') and (c.FAFCH between '''+fecha1+''' and '''+fecha2+''')  '+  //
                   ' where a.ARCODIGO = '''+Codigo_Prod.Text+'''');
                   //' where a.ARCODIGO LIKE '+QuotedSTr('%'+Codigo_Prod.Text+'%')); //a.ARNOMBRE LIKE'+QuotedSTr('%'+nombre_prod.Text+'%'));
  IBQuery4.Prepare;
  IBQuery4.Open;
  begin
    conte :=  IBQuery4.FieldByName('entradas').AsInteger;

    IBQuery4.Close;
    IBQuery4.SQL.Clear;
    IBQuery4.SQL.Add('select  extract(year from c.fafch) annio, extract(month from c.fafch) mess, sum(b.facantidad) total_mes '+
                       'from ARTICULOS a inner join FACTURADT b on (b.FAARID = a.ARID) '+
                       'inner join FACTURAS c on (c.FAID = b.FAID) and (c.FAESTADO <> '''+estado1+''') and (c.FAFCH between '''+fecha1+''' and '''+fecha2+''') '+
                       'where  a.ARCODIGO = '''+Codigo_Prod.Text+''' group by 1,2 order by 1,2 ');


    IBQuery4.Prepare;
    IBQuery4.Open;
  end;

  c1 := 0;
  IBQuery4.First;
  while not Movimiento_Pedidos.IBQuery4.EOF do
    begin
      begin
        sg1.Cells[1+c1,3] := IBQuery4.FieldByName('mess').AsString+'-'+IBQuery4.FieldByName('annio').AsString;
        sg1.Cells[2+c1,3] := IBQuery4.FieldByName('total_mes').AsString;
        c1 := c1+2;
      end;
      IBQuery4.Next;
    end;
end;

El problema estaba, en que no estaba utilizando el while, y lo que utilizaba era el for.


Gracias.

ecfisa 25-01-2014 20:26:49

Hola Jorge.

Gracias por compartir como lo solucionaste ^\||/

Saludos :)


La franja horaria es GMT +2. Ahora son las 19:01:34.

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