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

📄 hrm230_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Hrm230_01;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Bas100_01, Db, Series, TeEngine, ExtCtrls, TeeProcs, Chart, fr_Class,
  DBChart, ComCtrls, ToolWin, StdCtrls, Buttons, ExtDlgs, ADODB, Menus;

type
  THrm230_01Form = class(TBas100_01Form)
    ScrollBox1: TScrollBox;
    DBChart1: TDBChart;
    Series1: TBarSeries;
    Series2: TPieSeries;
    Panel1: TPanel;
    lblCondition: TLabel;
    ComboBox1: TComboBox;
    lblType: TLabel;
    ComboBox2: TComboBox;
    lblShow: TLabel;
    ComboBox3: TComboBox;
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    tlbPrint: TToolButton;
    ToolButton4: TToolButton;
    tlbExit: TToolButton;
    Image1: TImage;
    ADOQuery1: TADOQuery;
    ADODataSet1: TADODataSet;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure tlbPrintClick(Sender: TObject);
    procedure tlbExitClick(Sender: TObject);
    procedure ReportGetValue(const ParName: String;
      var ParValue: Variant);
  private
    procedure InsertRecord(AValue:string);
    procedure SetInterface;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Hrm230_01Form: THrm230_01Form;

implementation

uses SYSDATA, CommFun, Wait;

{$R *.DFM}

procedure THrm230_01Form.SetInterface;
begin
  Caption:=GetDBString('HRM23001001');  //员工结构分析 
  lblCondition.Caption:=GetDBString('HRM23001002');  //分析条件
  lblType.Caption:=GetDBString('HRM23001003');  //图表类型
  lblShow.Caption:=GetDBString('HRM23001004');  //显示
end;

procedure THrm230_01Form.InsertRecord(AValue:string);
begin
  ADODataSet1.Append;
  ADODataSet1.FieldByName('R130_001').Value:=AValue;  //年龄
  ADODataSet1.FieldByName('R130_002').Value:=0;      //人数
  ADODataSet1.FieldByName('R130_003').Value:=0;  //比率
  ADODataSet1.Post;
end;

procedure THrm230_01Form.FormCreate(Sender: TObject);
begin
  inherited;
  ComboBox1.Items.Clear;
  ComboBox1.Items.Add(GetDBString('HRM23001005'));  //按性别
  ComboBox1.Items.Add(GetDBString('HRM23001006'));  //按年龄
  ComboBox1.Items.Add(GetDBString('HRM23001007'));  //按籍贯
  ComboBox1.Items.Add(GetDBString('HRM23001008'));  //按学历
  ComboBox1.Items.Add(GetDBString('HRM23001009'));  //按工龄
  ComboBox1.ItemIndex:=0;

  ComboBox2.Items.Clear;
  ComboBox2.Items.Add(GetDBString('HRM23001010'));  //柱状图
  ComboBox2.Items.Add(GetDBString('HRM23001011'));  //圆饼图
  ComboBox2.ItemIndex:=0;

  ComboBox3.Items.Clear;
  ComboBox3.Items.Add(GetDBString('HRM23001012'));  //数量
  ComboBox3.Items.Add(GetDBString('HRM23001013'));  //百分比
  ComboBox3.ItemIndex:=0;

  ComboBox1Change(ComboBox1);
  SetInterface;
end;

procedure THrm230_01Form.ComboBox1Change(Sender: TObject);
var
  ACount:Integer;
begin
  inherited;
//分析条件
  WaitForm.Show;
  WaitForm.Update;
  //按性别分析
  ADODataSet1.Close;
  ADODataSet1.FieldDefs.Clear;
  ADODataSet1.FieldDefs.Add('R130_001',ftString,30);
  ADODataSet1.FieldDefs.Add('R130_002',ftFloat,0);
  ADODataSet1.FieldDefs.Add('R130_003',ftFloat,0);
  ADODataSet1.CreateDataSet;
  ACount:=0;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  if ComboBox1.ItemIndex=0 then
  begin
    ADOQuery1.SQL.Add('select distinct H150_007 from HRM150 where H150_012=1');
    ADOQuery1.Open;
    while not ADOQuery1.Eof do
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select count(*) from HRM150 where H150_012=1 and H150_007='+''''+ADOQuery1.Fields[0].Value+'''');
      SYSDM.qryQuery.Open;
      ACount:=ACount+SYSDM.qryQuery.Fields[0].Value;

      ADODataSet1.Append;
      ADODataSet1.FieldByName('R130_001').Value:=ADOQuery1.Fields[0].Value;
      ADODataSet1.FieldByName('R130_002').Value:=SYSDM.qryQuery.Fields[0].Value;
      ADODataSet1.FieldByName('R130_003').Value:=0;
      ADODataSet1.Post;
      ADOQuery1.Next;
    end;
  end
  //按年龄分析
  else if ComboBox1.ItemIndex=1 then
  begin
    ADOQuery1.SQL.Add('select distinct datediff(''yyyy'',H150_013,date()) from HRM150 where H150_012=1 and H150_013 is not null');
    ADOQuery1.Open;

    InsertRecord(GetDBString('HRM23001014'));  //0~15岁
    InsertRecord(GetDBString('HRM23001015'));  //16~20岁
    InsertRecord(GetDBString('HRM23001016'));  //21~25岁
    InsertRecord(GetDBString('HRM23001017'));  //26~30岁
    InsertRecord(GetDBString('HRM23001018'));  //31~35岁
    InsertRecord(GetDBString('HRM23001019'));  //36~40岁
    InsertRecord(GetDBString('HRM23001020'));  //41~45岁
    InsertRecord(GetDBString('HRM23001021'));  //46~50岁
    InsertRecord(GetDBString('HRM23001022'));  //51~55岁
    InsertRecord(GetDBString('HRM23001023'));  //56~60岁
    InsertRecord(GetDBString('HRM23001024'));  //61~65岁
    InsertRecord(GetDBString('HRM23001025'));  //66~70岁
    InsertRecord(GetDBString('HRM23001026'));  //71~75岁
    InsertRecord(GetDBString('HRM23001027'));  //76~80岁

    while not ADOQuery1.Eof do
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select count(*) from HRM150 where H150_012=1 and datediff(''yyyy'',H150_013,date())='+ADOQuery1.Fields[0].AsString);
      SYSDM.qryQuery.Open;
      ACount:=ACount+SYSDM.qryQuery.Fields[0].Value;

      if ADOQuery1.Fields[0].Value<=15 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001014'),[])  //0~15岁
      else if ADOQuery1.Fields[0].Value<=20 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001015'),[])  //16~20岁
      else if ADOQuery1.Fields[0].Value<=25 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001016'),[])  //21~25岁
      else if ADOQuery1.Fields[0].Value<=30 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001017'),[])  //26~30岁
      else if ADOQuery1.Fields[0].Value<=35 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001018'),[])  //31~35岁
      else if ADOQuery1.Fields[0].Value<=40 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001019'),[])  //36~40岁
      else if ADOQuery1.Fields[0].Value<=45 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001020'),[])  //41~45岁
      else if ADOQuery1.Fields[0].Value<=50 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001021'),[])  //46~50岁
      else if ADOQuery1.Fields[0].Value<=55 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001022'),[])  //51~55岁
      else if ADOQuery1.Fields[0].Value<=60 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001023'),[])  //56~60岁
      else if ADOQuery1.Fields[0].Value<=65 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001024'),[])  //61~65岁
      else if ADOQuery1.Fields[0].Value<=70 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001025'),[])  //66~70岁
      else if ADOQuery1.Fields[0].Value<=75 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001026'),[])  //71~75岁
      else if ADOQuery1.Fields[0].Value<=75 then ADODataSet1.Locate('R130_001',GetDBString('HRM23001027'),[]); //76~80岁
      ADODataSet1.Edit;
      ADODataSet1.FieldByName('R130_002').Value:=ADODataSet1.FieldByName('R130_002').Value+SYSDM.qryQuery.Fields[0].Value;      //人数
      ADODataSet1.FieldByName('R130_003').Value:=0;  //比率
      ADODataSet1.Post;
      ADOQuery1.Next;
    end;
    ADODataSet1.First;
    while not ADODataSet1.Eof do
    begin
      if ADODataSet1.FieldByName('R130_002').Value=0 then
        ADODataSet1.Delete
      else
        ADODataSet1.Next;
    end;
  end
  //按籍贯分析
  else if ComboBox1.ItemIndex=2 then
  begin
    ADOQuery1.SQL.Add('select distinct H150_009 from HRM150 where H150_012=1 and H150_009 is not null and H150_009<>''''');
    ADOQuery1.Open;
    while not ADOQuery1.Eof do
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select count(*) from HRM150 where H150_012=1 and H150_009='+''''+ADOQuery1.Fields[0].Value+'''');
      SYSDM.qryQuery.Open;
      ACount:=ACount+SYSDM.qryQuery.Fields[0].Value;

      ADODataSet1.Append;
      ADODataSet1.FieldByName('R130_001').Value:=ADOQuery1.Fields[0].Value;  //籍贯
      ADODataSet1.FieldByName('R130_002').Value:=SYSDM.qryQuery.Fields[0].Value;      //人数
      ADODataSet1.FieldByName('R130_003').Value:=0;  //比率
      ADODataSet1.Post;
      ADOQuery1.Next;
    end;
  end
  //按学历分析
  else if ComboBox1.ItemIndex=3 then
  begin
    ADOQuery1.SQL.Add('select distinct H150_022 from HRM150 where H150_012=1 and H150_022 is not null and H150_022<>''''');
    ADOQuery1.Open;
    while not ADOQuery1.Eof do
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select count(*) from HRM150 where H150_012=1 and H150_022='+''''+ADOQuery1.Fields[0].Value+'''');
      SYSDM.qryQuery.Open;
      ACount:=ACount+SYSDM.qryQuery.Fields[0].Value;

      ADODataSet1.Append;
      ADODataSet1.FieldByName('R130_001').Value:=ADOQuery1.Fields[0].Value;  //学历
      ADODataSet1.FieldByName('R130_002').Value:=SYSDM.qryQuery.Fields[0].Value;      //人数
      ADODataSet1.FieldByName('R130_003').Value:=0;  //比率
      ADODataSet1.Post;
      ADOQuery1.Next;
    end;
  end
  //按工龄分析
  else if ComboBox1.ItemIndex=4 then
  begin
    ADOQuery1.SQL.Add('select distinct datediff(''yyyy'',H150_011,date()) from HRM150 where H150_012=1');
    ADOQuery1.Open;
    while not ADOQuery1.Eof do
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select count(*) from HRM150 where H150_012=1 and datediff(''yyyy'',H150_011,date())='+ADOQuery1.Fields[0].AsString);
      SYSDM.qryQuery.Open;
      ACount:=ACount+SYSDM.qryQuery.Fields[0].Value;

      ADODataSet1.Append;
      ADODataSet1.FieldByName('R130_001').Value:=ADOQuery1.Fields[0].AsString+GetDBString('HRM23001028');  //年  //工龄
      ADODataSet1.FieldByName('R130_002').Value:=SYSDM.qryQuery.Fields[0].Value;      //人数
      ADODataSet1.FieldByName('R130_003').Value:=0;  //比率
      ADODataSet1.Post;
      ADOQuery1.Next;
    end;
  end;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('R130_003').Value:=(100*ADODataSet1.FieldByName('R130_002').Value)/Acount;  //比率
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  WaitForm.Close;
end;

procedure THrm230_01Form.ComboBox3Change(Sender: TObject);
begin
  inherited;
//显示 & 图表类型
  case ComboBox3.ItemIndex of
    0:begin
        DBChart1.Legend.TextStyle:=ltsLeftValue;
        if ComboBox2.ItemIndex=0 then
        begin
          Series1.Active:=True;
          Series2.Active:=False;
          Series1.Marks.Style:=smsLabelValue;
        end else
        begin
          Series1.Active:=False;
          Series2.Active:=True;
          Series2.Marks.Style:=smsLabelValue;
        end;
      end;
    1:begin
        DBChart1.Legend.TextStyle:=ltsRightPercent;
        if ComboBox2.ItemIndex=0 then
        begin
          Series1.Active:=True;
          Series2.Active:=False;
          Series1.Marks.Style:=smsLabelPercent;
        end else
        begin
          Series1.Active:=False;
          Series2.Active:=True;
          Series2.Marks.Style:=smsLabelPercent;
        end;
      end;
  end;
end;

procedure THrm230_01Form.tlbPrintClick(Sender: TObject);
var
  AfrReport:TfrReport;
begin
  inherited;
//打印
  with TBitmap.Create do
  try
    Width:=DBChart1.Width;
    Height:=DBChart1.Height;
    DBChart1.BufferedDisplay:=False;
    DBChart1.Draw(Canvas,Rect(0,0,Width,Height));
    DBChart1.BufferedDisplay:=True;
    SaveToFile(ASystemPath+'Report\REP230.bmp');
  finally
    Free;
  end;

  AfrReport:=TfrReport.Create(nil);
  try
    PreparedReport(ADODataSet1,AReportName,AfrReport);
    SYSDM.frDBDataSet1.DataSet:=ADODataSet1;
    ADODataSet1.DisableControls;
    TfrPictureView(SYSDM.frReport2.FindObject('Picture1')).Picture.LoadFromFile(ASystemPath+'Report\REP230.bmp');
    SYSDM.frReport2.ShowReport;
    ADODataSet1.EnableControls;
  finally
    ADODataSet1.EnableControls;
    SYSDM.frReport2.Clear;
//    AfrReport.Free;
    if FileExists(ASystemPath+'Report\REP230.bmp') then DeleteFile(ASystemPath+'Report\REP230.bmp');
  end;
end;

procedure THrm230_01Form.tlbExitClick(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure THrm230_01Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;
  if ParName='USENM' then ParValue:=AUserName
  else if ParName='PRNDT' then ParValue:=GetDBString('COM00006006')  //列印日期
  else if ParName='PRNNM' then ParValue:=GetDBString('COM00006007')  //列印人員
  else if ParName='REPNM' then ParValue:=AReportTitle

  else if ParName='R130_001' then ParValue:=GetDBString('HRM23001029')  //项目
  else if ParName='R130_002' then ParValue:=GetDBString('HRM23001030')  //数量
  else if ParName='R130_003' then ParValue:=GetDBString('HRM23001031')  //比率
end;

initialization
  RegisterClass(THrm230_01Form);

finalization
  UnRegisterClass(THrm230_01Form);

end.

⌨️ 快捷键说明

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