⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ord420_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
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 + -