sale.pas

来自「完整的delphi书籍源代码,大家有空的时候自己慢慢看看」· PAS 代码 · 共 228 行

PAS
228
字号
unit Sale;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB,RVClass,RVProj,RVCsStd, StdCtrls, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls;

type
  TSaleFrm = class(TForm)
    ADOQuery1: TADOQuery;
    GroupBox1: TGroupBox;
    Button1: TButton;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox2: TGroupBox;
    ADOQuery2: TADOQuery;
    DBGrid1: TDBGrid;
    ADOQuery3: TADOQuery;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery4: TADOQuery;
    GroupBox3: TGroupBox;
    DBGrid2: TDBGrid;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  SaleFrm: TSaleFrm;


implementation

uses Main;

{$R *.dfm}

procedure TSaleFrm.Button1Click(Sender: TObject);
var ProductCode,ProductName,Spec,PUnit:string;
    AllPayment,AllQuantity,AvgStock,GrossProfit:real;
    OtherProfit,OtherPayout,AllProfit:real;
    AllSale,AllGProfit:real;
    i:integer;
begin
    
    AllSale:=0;
    AllGProfit:=0;
    with adoquery1 do
     begin
       close;
       sql.clear;
       sql.add('select sum(payment) Allpayment,sum(quantity) AllQuantity,ProductCode');
       sql.add(' from Sell where Selldate>='+''''+datetostr(DateTimePicker1.date)+'''' );
       sql.add('and Selldate<='+''''+datetostr(DateTimePicker2.date)+'''' );
       sql.add('group by ProductCode');
       open;
       first;
       for i:=1 to recordcount do
       begin
        AllPayment:=fieldbyname('AllPayment').AsFloat;
        AllQuantity:=fieldbyname('AllQuantity').AsFloat;
        ProductCode:=fieldbyname('ProductCode').AsString;
        with adoquery2 do
         begin
          close;
          sql.clear;
          sql.add('select sum(payment) Allpayment,sum(quantity) AllQuantity ');
          sql.add('from Stock where ProductCode='+''''+ProductCode+'''');
          sql.add('group by Productcode');
          open;
          first;
          AvgStock:=strtofloat(format('%.4f',[fieldbyname('AllPayment').Asfloat/fieldbyname('AllQuantity').AsFloat]));
          GrossProfit:=strtofloat(format('%.4f',[AllPayment-AllQuantity*AvgStock]));
          AllGProfit:=AllGProfit+GrossProfit;
          AllSale:=AllSale+AllPayment;
         end;
        with adoquery2 do
         begin
          close;
          sql.clear;
          sql.add('select * from Product where ProductCode='+''''+ProductCode+'''');
          open;
          first;
          ProductName:=fieldbyname('ProductName').asstring;
          Spec:=fieldbyname('Spec').asstring;
          PUnit:=fieldbyname('Unit').asstring;
          sql.add('insert into sale (StartDate,EndDate,ProductCode,ProductName,Spec,');
          sql.add('Unit,AvgStock,AllQuantity,AllPayment,GrossProfit) values(');
          sql.add(''''+datetostr(DateTimePicker1.date)+''''+',');
          sql.add(''''+datetostr(DateTimePicker2.date)+''''+',');
          sql.add(''''+ProductCode+''''+','+''''+ProductName+''''+',');
          sql.add(''''+Spec+''''+','+''''+PUnit+''''+',');
          sql.add(''''+Floattostr(AvgStock)+''''+','+''''+Floattostr(AllQuantity)+''''+',');
          sql.add(''''+Floattostr(AllPayment)+''''+','+''''+Floattostr(GrossProfit)+''''+')');
          execsql;
         end;
      next;
    end;
  end;
  with adoquery3 do
   begin
    close;
    sql.clear;
    sql.add('select * from Sale where Startdate='+''''+datetostr(DateTimePicker1.date)+'''');
    sql.add('and EndDate='+''''+datetostr(DateTimePicker2.date)+'''');
    open;
    first;
   end;
  with adoquery2 do
   begin
    close;
    sql.clear;
    sql.add('delete  from Sale where StartDate!='+'0'  );
    execsql;
   end;

   with adoquery1 do
    begin
     close;
     sql.clear;
     sql.add('Select sum(Payment) OtherProfit from IE where ' );
     sql.add(' IEdate>='+''''+datetostr(DateTimePicker1.date)+'''' );
     sql.add('and IEdate<='+''''+datetostr(DateTimePicker2.date)+'''' );
     sql.add('and IEtype='+''''+'收入'+''''+'group by IEType');
     open;
     first;
     if recordcount=0 then
        OtherProfit:=0
     else
        OtherProfit:=Fieldbyname('otherprofit').asfloat;
    end;

   with adoquery1 do
    begin
     close;
     sql.clear;
     sql.add('Select sum(Payment) OtherPayout from IE where ' );
     sql.add(' IEdate>='+''''+datetostr(DateTimePicker1.date)+'''' );
     sql.add('and IEdate<='+''''+datetostr(DateTimePicker2.date)+'''' );
     sql.add('and IEtype='+''''+'支出'+''''+'group by IEType');
     open;
     first;
     if recordcount=0 then
        OtherPayout:=0
     else
        OtherPayout:=Fieldbyname('otherpayout').asfloat;
    end;

   AllProfit:=AllGProfit+OtherProfit-OtherPayout;
   with adoquery1 do
    begin
     close;
     sql.clear;
     sql.add('insert into profit (StartDate,EndDate,AllSale,');
     sql.add('AllGprofit,otherProfit,otherpayout,allprofit) values(');
     sql.add(''''+datetostr(DateTimePicker1.date)+''''+',');
     sql.add(''''+datetostr(DateTimePicker2.date)+''''+',');
     sql.add(''''+Floattostr(AllSale)+''''+',');
     sql.add(''''+Floattostr(AllGprofit)+''''+',');
     sql.add(''''+Floattostr(otherProfit)+''''+',');
     sql.add(''''+Floattostr(otherpayout)+''''+',');
     sql.add(''''+Floattostr(AllProfit)+''''+')');
     execsql;
    end;

  with adoquery4 do
   begin
    close;
    sql.clear;
    sql.add('select * from profit where Startdate='+''''+datetostr(DateTimePicker1.date)+'''');
    sql.add('and EndDate='+''''+datetostr(DateTimePicker2.date)+'''');
    open;
    first;
   end;
  with adoquery1 do
   begin
    close;
    sql.clear;
    sql.add('delete  from profit where StartDate!='+'0'  );
    execsql;
   end;



end;

procedure TSaleFrm.FormCreate(Sender: TObject);
begin
     DateTimePicker1.date:=date;
     DateTimePicker2.date:=date;
end;

procedure TSaleFrm.Button4Click(Sender: TObject);
begin
   SaleFrm.hide;
end;

procedure TSaleFrm.Button2Click(Sender: TObject);
begin
     MainFrm.RvProject1.Open;
    MainFrm.RvProject1.ExecuteReport('SaleReport');
    MainFrm.RvProject1.Close;
end;

procedure TSaleFrm.Button3Click(Sender: TObject);
begin
    MainFrm.RvProject1.Open;
    MainFrm.RvProject1.ExecuteReport('ProfitReport');
    MainFrm.RvProject1.Close;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?