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

📄 chartsalescunit.~pas

📁 在数据库应用系统开发之前
💻 ~PAS
字号:
unit ChartSaleSCUnit;

interface

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

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

var
  ChartSaleSCForm: TChartSaleSCForm;

implementation

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

procedure TChartSaleSCForm.FormCreate(Sender: TObject);
begin
  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 depot where type="外部"';
    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_nameClick(sender);
    close;
  end;
end;

procedure TChartSaleSCForm.FormShow(Sender: TObject);
begin
  SB_query.Click;
end;

procedure TChartSaleSCForm.DTP_beginChange(Sender: TObject);
begin
  series_one.Clear;
  Series_two.Clear;
end;

procedure TChartSaleSCForm.DTP_endChange(Sender: TObject);
begin
  series_one.Clear;
  Series_two.Clear;
end;

procedure TChartSaleSCForm.CLB_nameClick(Sender: TObject);
var
  I_index: integer;
begin
  inherited;
  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 TChartSaleSCForm.SB_queryClick(Sender: TObject);
var
  D_number: double;
  S_DEPOTname, S_begindate, S_enddate: string;
  I_index: integer;
begin
  inherited;
  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_DEPOTname := 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 DEPOT ON  (Sellrecord.DEPOTID = DEPOT.Id)'
          + ' WHERE  DEPOT.Name = "' + S_DEPOTname + '"'
          + ' AND Sellrecord.MYDATE>="' + S_begindate + '" AND Sellrecord.MYDATE<="' + S_enddate + '"';
        open;
        D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
        series_one.AddBar(D_number, S_DEPOTname, CLBLUE);
        close;
        sql.Text := 'SELECT SUM(  xsthrecord.NUMBER * xsthrecord.PRICE  ) COUNTNUMBER'
          + ' FROM xsthrecord INNER JOIN DEPOT ON  (xsthrecord.DEPOTID = DEPOT.Id)'
          + ' WHERE  DEPOT.Name = "' + S_DEPOTname + '"'
          + ' AND xsthrecord.MYDATE>="' + S_begindate + '" AND xsthrecord.MYDATE<="' + S_enddate + '"';
        open;
        D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
        series_two.AddBar(D_number, S_DEPOTname, CLRED);
      end;
    end;
  end;

  PrograssForm.free;

end;

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

end.

⌨️ 快捷键说明

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