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 + -
显示快捷键?