📄 ord420_01.pas.svn-base
字号:
unit Ord420_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_12, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBTL, ExtCtrls, ComCtrls, ToolWin, StdCtrls, wwfltdlg, fr_Class,
wwdbdatetimepicker, Buttons, TeeProcs, TeEngine, Chart, DbChart, Series,
dxDBTLCl;
type
TOrd420_01Form = class(TBas200_12Form)
sbSearch: TSpeedButton;
ADOQuery1: TADOQuery;
ActOpen: TAction;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
lblType: TLabel;
lblDate: TLabel;
cbType: TComboBox;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
ADODataSet1FNo: TIntegerField;
ADODataSet1FName: TStringField;
ADODataSet1FParent: TIntegerField;
ADODataSet1FQuote: TIntegerField;
ADODataSet1FOrder: TIntegerField;
ADODataSet1FPercent: TFloatField;
dxDBTreeList1FName: TdxDBTreeListMaskColumn;
dxDBTreeList1FQuote: TdxDBTreeListMaskColumn;
dxDBTreeList1FOrder: TdxDBTreeListMaskColumn;
dxDBTreeList1FPercent: TdxDBTreeListMaskColumn;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure ActPrintExecute(Sender: TObject);
private
ABusy:Boolean;
ATotal:array[1..2] of double;
procedure ByCustomer(AFromDate,AToDate:TDateTime); //按客户
procedure ByCustomerClass(AFromDate,AToDate:TDateTime); //按客户类别
procedure ByItem(AFromDate,AToDate:TDateTime); //按产品
procedure ByItemClass(AFromDate,AToDate:TDateTime); //按产品类别
procedure BySeller(AFromDate,AToDate:TDateTime); //按销售员
procedure ByArea(AFromDate,AToDate:TDateTime); //按地区
{ Private declarations }
public
procedure SetInterface; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Ord420_01Form: TOrd420_01Form;
implementation
uses SYSDATA, CommFun;
{$R *.dfm}
procedure TOrd420_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('ORD42001001'); //报价成交分析
lblDate.Caption:=GetDBString('ORD42001002'); //日期
lblType.Caption:=GetDBString('ORD42001003'); //类型
sbSearch.Caption:=GetDBString('ORD42001004'); //查询
ADODataSet1FName.DisplayLabel:=GetDBString('ORD42001005'); //编号名称
ADODataSet1FQuote.DisplayLabel:=GetDBString('ORD42001006'); //报价次数
ADODataSet1FOrder.DisplayLabel:=GetDBString('ORD42001007'); //成交次数
ADODataSet1FPercent.DisplayLabel:=GetDBString('ORD42001008'); //成交比率
cbType.Clear;
cbType.Items.Add(GetDBString('ORD42001009')); //按客户
cbType.Items.Add(GetDBString('ORD42001010')); //按客户类别
cbType.Items.Add(GetDBString('ORD42001011')); //按产品
cbType.Items.Add(GetDBString('ORD42001012')); //按产品类别
cbType.Items.Add(GetDBString('ORD42001013')); //按销售员
cbType.Items.Add(GetDBString('ORD42001014')); //按地区
cbType.ItemIndex:=0;
end;
procedure TOrd420_01Form.FormCreate(Sender: TObject);
var
ADate:TDateTime;
begin
inherited;
SetInterface;
ADate:=GetServerDate;
edtFromDate.Date:=GetMonthFirstDate(ADate);
edtToDate.Date:=GetMonthEndDate(ADate);
sbSearch.Click;
end;
procedure TOrd420_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
ADOQuery1.Close;
end;
procedure TOrd420_01Form.ByCustomer(AFromDate,AToDate:TDateTime); //按客户
begin
//报价单数量统计 按报价日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select O150_001 as FNo,''[''+O150_002+'']''+O150_003 as FName,O150_001 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD500A,ORD500B,ORD150');
ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_017=O150_001 and O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by O150_001,''[''+O150_002+'']''+O150_003,O150_001');
ADOQuery1.SQL.Add('order by ''[''+O150_002+'']''+O150_003');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FOrder').Value:=0;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
//定单數量統計 按销售日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select O150_001 as FNo,''[''+O150_002+'']''+O150_003 as FName,O150_001 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD510A,ORD510B,ORD150');
ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_017=O150_001 and O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by O150_001,''[''+O150_002+'']''+O150_003,O150_001');
ADOQuery1.SQL.Add('order by ''[''+O150_002+'']''+O150_003');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
begin
ADODataSet1.Edit;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
ADODataSet1.Post;
end else
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=0;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
end;
ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
ADODataSet1.Edit;
if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
ADODataSet1.FieldByName('FPercent').Value:=0
else
ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
ADODataSet1.Post;
ADODataSet1.Next;
end;
end;
procedure TOrd420_01Form.ByCustomerClass(AFromDate, AToDate: TDateTime); //按客户类别
begin
//报价单数量统计 按报价日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select O110_001 as FNo,O110_002 as FName,O110_003 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD500A,ORD500B,ORD150,ORD110');
ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_017=O150_001 and O150_010=O110_001 and');
ADOQuery1.SQL.Add(' O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by O110_001,O110_002,O110_003');
ADOQuery1.SQL.Add('order by O110_001');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FOrder').Value:=0;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
//定单數量統計 按销售日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select O110_001 as FNo,O110_002 as FName,O110_003 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD510A,ORD510B,ORD150,ORD110');
ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_017=O150_001 and O150_010=O110_001 and');
ADOQuery1.SQL.Add(' O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by O110_001,O110_002,O110_003');
ADOQuery1.SQL.Add('order by O110_001');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
begin
ADODataSet1.Edit;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
ADODataSet1.Post;
end else
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=0;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
end;
ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
ADODataSet1.Edit;
if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
ADODataSet1.FieldByName('FPercent').Value:=0
else
ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
ADODataSet1.Post;
ADODataSet1.Next;
end;
end;
procedure TOrd420_01Form.ByItem(AFromDate, AToDate: TDateTime);
begin
//报价单数量统计 按报价日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select I150_001 as FNo,''[''+I150_002+'']''+I150_003 as FName,I150_001 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD500A,ORD500B,INV150');
ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500B_003=I150_001 and');
ADOQuery1.SQL.Add(' O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by I150_001,''[''+I150_002+'']''+I150_003,I150_001');
ADOQuery1.SQL.Add('order by ''[''+I150_002+'']''+I150_003');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FOrder').Value:=0;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
//定单數量統計 按销售日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select I150_001 as FNo,''[''+I150_002+'']''+I150_003 as FName,I150_001 as FParent,count(*) as FNum');
ADOQuery1.SQL.Add('from ORD510A,ORD510B,INV150');
ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510B_003=I150_001 and');
ADOQuery1.SQL.Add(' O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
ADOQuery1.SQL.Add('group by I150_001,''[''+I150_002+'']''+I150_003,I150_001');
ADOQuery1.SQL.Add('order by ''[''+I150_002+'']''+I150_003');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('FNo').Value,[]) then
begin
ADODataSet1.Edit;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FNum').Value/ADODataSet1.FieldByName('FQuote').Value)*100;
ADODataSet1.Post;
end else
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('FNo').Value;
ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('FName').Value;
ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('FParent').Value;
ADODataSet1.FieldByName('FQuote').Value:=0;
ADODataSet1.FieldByName('FOrder').Value:=ADOQuery1.FieldByName('FNum').Value;
ADODataSet1.FieldByName('FPercent').Value:=0;
ADODataSet1.Post;
end;
ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FNum').Value;
ADOQuery1.Next;
end;
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
ADODataSet1.Edit;
if ADODataSet1.FieldByName('FOrder').AsInteger=0 then
ADODataSet1.FieldByName('FPercent').Value:=0
else
ADODataSet1.FieldByName('FPercent').Value:=ADODataSet1.FieldByName('FQuote').AsInteger/ADODataSet1.FieldByName('FOrder').AsInteger;
ADODataSet1.Post;
ADODataSet1.Next;
end;
end;
procedure TOrd420_01Form.ByItemClass(AFromDate,AToDate:TDateTime); //按産品類別
begin
//报价单数量统计 按报价日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select I120_001 as FNo,''[''+I120_002+'']''+I120_003 as FName,I120_004 as FParent,count(*) as FNum');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -