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

📄 chartsaleunit.pas

📁 安装完成后
💻 PAS
字号:
unit ChartSaleUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, TeEngine, Series, TeeProcs, Chart, DbChart, ExtCtrls, CheckLst, Buttons,
  DB, DBTables;

type
  TChartSaleForm = class(TForm)
    PanelBkGnd: TPanel;
    DBC_data: TDBChart;
    Series_two: TBarSeries;
    Series_one: TBarSeries;
    Panel_top: TPanel;
    SB_query: TSpeedButton;
    Label4: TLabel;
    Panel_printbutton: TPanel;
    DTP_begin: TDateTimePicker;
    DTP_end: TDateTimePicker;
    Panel_bottom: TPanel;
    Panel_closebutton: TPanel;
    DFB_CLOSE: TButton;
    CB_3DCHART: TCheckBox;
    TrackBar_3dview: TTrackBar;
    Panel_field: TPanel;
    Label1: TLabel;
    CLB_name: TCheckListBox;
    Query_data: TQuery;
    procedure SB_queryClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CLB_nameClickCheck(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DTP_beginChange(Sender: TObject);
    procedure DTP_endChange(Sender: TObject);
    procedure DFB_CLOSEClick(Sender: TObject);
    procedure CB_3DCHARTClick(Sender: TObject);
    procedure TrackBar_3dviewChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ChartSaleForm: TChartSaleForm;

implementation

uses FunctionUnit, MainUnit, PrograssUnit, PrintywyxsUnit, PrintBassUnit;
{$R *.dfm}

procedure TChartSaleForm.SB_queryClick(Sender: TObject);
var
  D_number: double;
  S_peoplename, S_begindate, S_enddate: string;
  I_index: integer;
begin
  sb_query.Enabled := false;

  S_begindate := formatdatetime('yyyy-mm-dd', dtp_begin.Date);
  S_enddate := formatdatetime('yyyy-mm-dd', dtp_end.Date);
  if S_begindate > S_enddate then //开始日期大于结束日期
  begin
    messagedlg(Errormsg0012 + '0026', mtError, [mbok], 0);
    dtp_begin.SetFocus;
    exit;
  end;
  series_one.Clear;
  Series_two.Clear;
  application.CreateForm(TPrograssForm, PrograssForm);
  PrograssForm.P_message.Caption := '系统正在读取数据,请稍候……';
  PrograssForm.FormStyle := fsStayOnTop;
  PrograssForm.show;
  PrograssForm.Update;
  application.ProcessMessages;

  for I_index := 1 to clb_name.Items.Count - 1 do
  begin
    if clb_name.Checked[I_index] then
    begin
      S_peoplename := clb_name.Items.Strings[I_index];
      with query_data do
      begin
        close;
        sql.Text := 'SELECT SUM(  Sellrecord.NUMBER * Sellrecord.PRICE  ) COUNTNUMBER'
          + ' FROM Sellrecord INNER JOIN YWYData ON  (Sellrecord.PEOPLEID = YWYData.Id)'
          + ' WHERE  YWYData.Name = "' + S_peoplename + '"'
          + ' AND Sellrecord.MYDATE>="' + S_begindate
          + '" AND Sellrecord.MYDATE<="' + S_enddate + '"';
        open;
        D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
        series_one.AddBar(D_number, S_peoplename, CLBLUE);//销售金额
        close;
        sql.Text := 'SELECT SUM(  xsthrecord.NUMBER * xsthrecord.PRICE  ) COUNTNUMBER'
          + ' FROM xsthrecord INNER JOIN YWYData ON  (xsthrecord.peopleId = YWYData.Id)'
          + ' WHERE  YWYData.Name = "' + S_peoplename + '"'
          + ' AND xsthrecord.MYDATE>="' + S_begindate
          + '" AND xsthrecord.MYDATE<="' + S_enddate + '"';
        open;
        D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
        series_two.AddBar(D_number, S_peoplename, CLRED);//退货金额
      end;
    end;
  end;

  PrograssForm.free;
end;

procedure TChartSaleForm.FormCreate(Sender: TObject);
var
  Year, Month, Day: Word;
begin
  query_data.DatabaseName := 'CPXSGL';
  DecodeDate(now, Year, Month, Day);
  if (I_countdate > 0) and (I_countdate < 28) then
    dtp_begin.Date := EncodeDate(Year, Month - 1, I_countdate + 1)
  else
    dtp_begin.Date := EncodeDate(Year, Month, 1);
  Dtp_end.Date := now;

  self.Caption := application.Title + ' - 业务员销售分析';
  DBC_data.Title.Font.Color := clNavy;
  DBC_data.Title.Text.Clear;
  DBC_data.Title.Text.Add('业务员销售对比图');
  DBC_data.LeftAxis.Title.Font.Color := clNavy;
  DBC_data.LeftAxis.Title.Caption := '金额(人民币)';
  series_one.Title := '销售量';
  series_two.Title := '退货量';
  with query_data do
  begin
    close;
    sql.Clear;
    sql.Text := 'select name from YWYData where usertype="在职"';
    open;
    clb_name.Clear;
    clb_name.Items.Append('所有');
    while not eof do
    begin
      clb_name.Items.Append(fieldbyname('name').asstring);
      next;
    end;
    clb_name.Checked[0] := true;
    CLB_nameClickCheck(sender);
    close;
  end;
end;

procedure TChartSaleForm.CLB_nameClickCheck(Sender: TObject);

var
  I_index: integer;
begin

  series_one.Clear;
  Series_two.Clear;
  //如果选择所有,则选中所有业务员
  if clb_name.Checked[0] then
  begin
    for I_index := 1 to clb_name.Items.Count - 1 do
    begin
      clb_name.Checked[I_index] := true;
    end;
  end
  else
    for I_index := 1 to clb_name.Items.Count - 1 do
    begin
      if not clb_name.Checked[I_index] then
      begin
        clb_name.Checked[0] := false;
        break;
      end;
    end;
  sb_query.Enabled := true;
end;


procedure TChartSaleForm.FormShow(Sender: TObject);
begin
  CB_3DCHART.Checked := true;
  SB_query.Click;
end;

procedure TChartSaleForm.DTP_beginChange(Sender: TObject);
begin
  DTP_end.Date := DTP_begin.Date + DaysInMonth(DTP_begin.Date) - 1;
  sb_query.Enabled := true;
  query_data.Close;
  series_one.Clear;
  Series_two.Clear;
end;

procedure TChartSaleForm.DTP_endChange(Sender: TObject);
begin
  sb_query.Enabled := true;
  query_data.Close;
  series_one.Clear;
  Series_two.Clear;
end;

procedure TChartSaleForm.DFB_CLOSEClick(Sender: TObject);
begin
  Self.Close;
end;

procedure TChartSaleForm.CB_3DCHARTClick(Sender: TObject);
begin
  TrackBar_3dview.Enabled := CB_3DCHART.Checked;
  DBC_DATA.View3D := CB_3DCHART.Checked;
  DBC_data.Chart3DPercent := TrackBar_3dview.Position;
end;

procedure TChartSaleForm.TrackBar_3dviewChange(Sender: TObject);
begin
  DBC_data.Chart3DPercent := TrackBar_3dview.Position;
end;

end.

⌨️ 快捷键说明

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