📄 uxqd_tj.pas
字号:
//========================================================
//
//
//
//========================================================
unit Uxqd_tj;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart,
StdCtrls, Buttons, ExtDlgs, ComCtrls;
type
TFrmxqd_tj = class(TForm)
ADOQChart: TADOQuery;
GroupBox1: TGroupBox;
Label1: TLabel;
modifetitle: TSpeedButton;
SavePicture: TSpeedButton;
SavePictureDialog1: TSavePictureDialog;
Label3: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBChart1: TDBChart;
Series1: TPieSeries;
DBChart2: TDBChart;
Series2: TBarSeries;
TreeView1: TTreeView;
dtp1: TDateTimePicker;
dtp2: TDateTimePicker;
Label2: TLabel;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
procedure DBChart1GetLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: string);
procedure CountListBoxClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure modifetitleClick(Sender: TObject);
procedure SavePictureClick(Sender: TObject);
procedure DBChart2GetLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
procedure csh();
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
SelectList: Integer; //当前选择的统计项,默认为0(第一项)
sqlstring: string; // SQL查询语句
colName: string; // 选中统计项的字段名称
node:ttreenode;
node1:ttreenode;
procedure LoadDBChart(var ColName: string; SqlString: string);
public
{ Public declarations }
end;
var
Frmxqd_tj: TFrmxqd_tj;
implementation
uses uconst,ufunction,udm1;
{$R *.dfm}
//========================================
//根据设置的条件进行图形显示
//========================================
procedure tfrmxqd_tj.csh();
begin
strsql:='select * from cgwl_mail where srrq>='+''''+datetostr(dtp1.Date)+''''+
'and srrq<='+''''+datetostr(dtp2.Date)+''''+'order by cgxqdh asc';
adoexect(adoquery1,strsql);
if not(adoquery1.Recordset.EOF and adoquery1.Recordset.BOF) then
begin
adoquery1.First;
treeview1.Items.Clear;
node:=treeview1.Items.AddFirst(nil,'需求单列表');
while not adoquery1.Eof do
begin
node1:=treeview1.Items.AddChild(node,trim(adoquery1.fieldbyname('cgxqdh').AsString));
if not adoquery2.Active then adoquery2.Open;
if not(adoquery2.Recordset.eof and adoquery2.Recordset.bof) then
begin
adoquery2.First;
while not adoquery2.Eof do
begin
treeview1.Items.AddChild(node1,trim(adoquery2.fieldbyname('classname').AsString));
adoquery2.Next;
end;
end;
adoquery1.Next;
end;
end;
adoquery1.Close;
end;
procedure TFrmxqd_tj.LoadDBChart(var ColName: string; SqlString: string);
begin
try
with ADOQChart do
begin
close;
SQL.Clear;
sql.Add(SqlString);
open;
end;
except
showmessage('打开图型查询出错');
end;
end;
//========================================
//设置饼状图DBCHART右边的标签显示
//========================================
procedure TFrmxqd_tj.DBChart1GetLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: string);
var titlestring: string;
begin
ADOQChart.First;
ADOQChart.MoveBy(index);
titlestring := LegendText;
if ColName = 'JoinInYear' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TJoinInYear']) + '年入本单位 ' + LegendText;
exit;
end;
if ColName = 'JoinInMonth' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TJoinInMonth']) + '月 ' + LegendText;
exit;
end;
if ColName = 'WorkAge' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TheWorkAge']) + '年出生 ' + LegendText;
exit;
end;
LegendText := ADOQChart.FieldByName(ColName).AsString + ' ' + LegendText
end;
//========================================
//设置选择列表的响应事件
//========================================
procedure TFrmxqd_tj.CountListBoxClick(Sender: TObject);
begin
case SelectList of
0: begin //按部门统计
SqlString := 'select Employee_FirstDept,count(Employee_FirstDept) From Employee group by Employee_FirstDept';
ColName := 'Employee_FirstDept';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('部门职工数量对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('部门职工数量对比图');
end;
1: begin //按性别统计
SqlString := 'select Employee_Sex,count(Employee_Sex) From Employee group by Employee_Sex';
ColName := 'Employee_Sex';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工性别对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工性别对比图');
end;
2: begin //按民族统计
SqlString := 'select Employee_Folk,count(Employee_Folk) From Employee group by Employee_Folk';
ColName := 'Employee_Folk';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工民族对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工民族对比图');
end;
3: begin //按政治面貌统计
SqlString := 'select Employee_Polity,count(Employee_Polity) From Employee group by Employee_Polity';
ColName := 'Employee_Polity';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工政治面貌对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工政治面貌对比图');
end;
4: begin //按婚姻状况统计
SqlString := 'select Employee_Marriage,count(Employee_Marriage) From Employee group by Employee_Marriage';
ColName := 'Employee_Marriage';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工婚姻状况对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工婚姻状况对比图');
end;
5: begin //按教育程度统计
SqlString := 'select Employee_Educate,count(Employee_Educate) From Employee group by Employee_Educate';
ColName := 'Employee_Educate';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工教育程度对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工教育程度对比图');
end;
6: begin //按职工类型统计
SqlString := 'select Employee_Type,count(Employee_Type) From Employee group by Employee_Type';
ColName := 'Employee_Type';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工类型对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工类型对比图');
end;
7: begin //按职称统计
SqlString := 'select Employee_Post,count(Employee_Post) From Employee group by Employee_Post';
ColName := 'Employee_Post';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工职称对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工职称对比图');
end;
8: begin //按职务统计
SqlString := 'select Employee_Duty,count(Employee_Duty) From Employee group by Employee_Duty';
ColName := 'Employee_Duty';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工职务对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工职务对比图');
end;
9: begin //按工资类别统计
SqlString := 'select Employee_PayType,count(Employee_PayType) From Employee group by Employee_PayType';
ColName := 'Employee_PayType';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工工资类别对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工工资类别对比图');
end;
10: begin //按毕业院校统计
SqlString := 'select Employee_School,count(Employee_School) From Employee group by Employee_School';
ColName := 'Employee_School';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工毕业院校对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工毕业院校对比图');
end;
11: begin //按年度新增员工统计
SqlString := 'select year(Employee_JoinDate) as TJoinInYear,count(year(Employee_JoinDate)) From Employee group by year(Employee_JoinDate)';
ColName := 'JoinInYear';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('年度新增职工对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('年度新增职工对比图');
end;
12: begin //按月度新增员工统计
SqlString := 'select month(Employee_JoinDate)as TJoinInMonth,count(month(Employee_JoinDate)) From Employee group by month(Employee_JoinDate)';
ColName := 'JoinInMonth';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('月度新增员工对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('月度新增员工对比图');
end;
13: begin //按职工年龄统计
SqlString := 'select year(Employee_Birthday) as TheWorkAge,count(year(now())-year(Employee_Birthday)) From Employee group by year(Employee_Birthday)';
ColName := 'WorkAge';
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('职工年龄对比图');
DBChart2.Title.Text.Clear;
DBChart2.Title.Text.Add('职工年龄对比图');
end;
end;
LoadDBChart(ColName, SqlString); //重新载入DBCHART
end;
//================================
// 在显示窗口时初始化窗口控件
//================================
procedure TFrmxqd_tj.FormShow(Sender: TObject);
begin
try
with ADOQChart do
begin
SQL.Clear;
SQL.Add('select Employee_FirstDept,count(Employee_FirstDept) From Employee group by Employee_FirstDept');
open;
end;
except
beep;
Showmessage('打开职工表失败,请检查数据库文件是否存在');
CLose;
end;
ColName := 'Employee_FirstDept';
end;
//========================================
//设置柱状图DBCHART右边的标签显示
//========================================
procedure TFrmxqd_tj.modifetitleClick(Sender: TObject);
begin
end;
//========================================
//保存图象为图片
//========================================
procedure TFrmxqd_tj.SavePictureClick(Sender: TObject);
begin
//showmessage(DBChart1.Title.Text.Text);
//SavePictureDialog1.FileName:=DBChart1.Title.Text.Text;
if SavePictureDialog1.Execute then
begin
if PageControl1.ActivePageIndex = 0 then
DBChart1.SaveToBitmapFile(SavePictureDialog1.FileName)
else
DBChart2.SaveToBitmapFile(SavePictureDialog1.FileName);
end;
end;
//========================================
//设置DBCHART右边的标签显示
//========================================
procedure TFrmxqd_tj.DBChart2GetLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
begin
ADOQChart.First;
ADOQChart.MoveBy(index);
if ColName = 'JoinInYear' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TJoinInYear']) + '年入本单位 ' + LegendText;
exit;
end;
if ColName = 'JoinInMonth' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TJoinInMonth']) + '月 ' + LegendText;
exit;
end;
if ColName = 'WorkAge' then
begin
LegendText := inttostr(ADOQChart.FieldValues['TheWorkAge']) + '年出生 ' + LegendText;
exit;
end;
LegendText := ADOQChart.FieldByName(ColName).AsString + ' ' + LegendText
end;
procedure TFrmxqd_tj.FormCreate(Sender: TObject);
begin
dtp1.Date:=date-30;
dtp2.Date:=date;
adoquery1.Connection:=dm1.ADOConnection1;
adoquery2.Connection:=dm1.ADOConnection1;
strsql:='select * from department order by classname asc';
adoexect(adoquery2,strsql);
csh;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -