【delphi开源代码栏目提醒】:网学会员delphi开源代码为您提供ChartSaleUnit.pas参考,解决您在ChartSaleUnit.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_ind