亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ryxxtjfx.pas

?? 酒店資源管理的軟件
?? PAS
字號:
unit ryxxtjfx;       //用Chartfx控件  人員分析

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, ADODB, TeeProcs,
  TeEngine, Chart, Series, DbChart, ComCtrls, OleCtrls, Chartfx3;

type
  TTypeOfTimeSm = record // 數值數據的分段數據結構
    min:integer;  //一段的最小數值
    max:integer;  //一段的最大數值
    sm:string;    //關于本數值段的說明
  end;
  TTypeOfTitle =record     //存儲字段名和字段顯示名稱的數據結構
    zd:string;      //字段名
    xs:string;      //顯示名稱
  end;
  TfrmRyxxtjfx = class(TForm)
    GroupBox3: TGroupBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    cmbFlxm1: TComboBox;
    CmbFlxm2: TComboBox;
    Button1: TButton;
    Button2: TButton;
    ADODataSet1: TADODataSet;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet4: TTabSheet;
    DBGrid1: TDBGrid;
    ChartfxPie: TChartfx;
    ChartfxBar: TChartfx;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    FTitleArray :array of TTypeOfTitle ;//分類統計時的字段名稱和顯示的數組
    //下面分別定義年齡、參加工作年限、進入本單位年限的分段數組
    FNlGroup,FCjgzGroup,FJrdwGroup:array of TTypeOfTimeSm ;
    //根據年齡字段的分組獲得進行sql查詢的字符串
    function getZdSqlStr(zdm:string;zdsz:array of TTypeOfTimeSm):string;
    procedure SynSeries;//根據查詢統計結果同步圖表的顯示數據
  public
    { Public declarations }
  end;

var
  frmRyxxtjfx: TfrmRyxxtjfx;

implementation

uses DM;

{$R *.dfm}

procedure TfrmRyxxtjfx.FormCreate(Sender: TObject);
var
  strSQL :string;
  i:integer;
begin
  //以下設置年齡的分段數組
  setLength(FNlGroup,6);
  FNlGroup[0].min := 0;
  FNlGroup[0].max := 20;
  FNlGroup[0].sm := '小于20歲';
  FNlGroup[1].min := 20;
  FNlGroup[1].max := 30;
  FNlGroup[1].sm := '20~30歲';
  FNlGroup[2].min := 30;
  FNlGroup[2].max := 40;
  FNlGroup[2].sm := '30~40歲';
  FNlGroup[3].min := 40;
  FNlGroup[3].max := 50;
  FNlGroup[3].sm := '40~50歲';
  FNlGroup[4].min := 50;
  FNlGroup[4].max := 60;
  FNlGroup[4].sm := '50~60歲';
  FNlGroup[5].min := 60;
  FNlGroup[5].max := MaxInt;
  FNlGroup[5].sm := '大于60歲';

  //以下設置進入單位時間的分段數組
  setLength(FJrdwGroup,9);
  FJrdwGroup[0].min := 0;
  FJrdwGroup[0].max := 1;
  FJrdwGroup[0].sm := '少于1年';
  FJrdwGroup[1].min := 1;
  FJrdwGroup[1].max := 2;
  FJrdwGroup[1].sm := '1~2年';
  FJrdwGroup[2].min := 2;
  FJrdwGroup[2].max := 3;
  FJrdwGroup[2].sm := '2~3年';
  FJrdwGroup[3].min := 3;
  FJrdwGroup[3].max := 5;
  FJrdwGroup[3].sm := '3~5年';
  FJrdwGroup[4].min := 5;
  FJrdwGroup[4].max := 10;
  FJrdwGroup[4].sm := '5~10年';
  FJrdwGroup[5].min := 10;
  FJrdwGroup[5].max := 20;
  FJrdwGroup[5].sm := '10~20年';
  FJrdwGroup[6].min := 20;
  FJrdwGroup[6].max := 30;
  FJrdwGroup[6].sm := '20~30年';
  FJrdwGroup[7].min := 30;
  FJrdwGroup[7].max := 40;
  FJrdwGroup[7].sm := '30~40年';
  FJrdwGroup[8].min := 40;
  FJrdwGroup[8].max := MaxInt;
  FJrdwGroup[8].sm := '多于40年';

  //以下設置參加工作年限分組
  FCjgzGroup := FJrdwGroup ;

  ADOQuery1.SQL.Clear ;
  strSQL := 'drop table TempJbzl';
  ADOQuery1.SQL.Add(strSQL); //首先刪除數據庫中的臨時表
  try
    ADOQuery1.ExecSQL ;
  except
  end;

  //設置查詢時的標題和對應的查詢字段
  SetLength(FTitleArray ,9);
  FTitleArray[0].zd := 'xbdm_mc';
  FTitleArray[0].xs := '性別';
  FTitleArray[1].zd := 'ageGroup';
  FTitleArray[1].xs := '年齡';
  FTitleArray[2].zd := 'workGroup';
  FTitleArray[2].xs := '工作年限';
  FTitleArray[3].zd := 'EnterGroup';
  FTitleArray[3].xs := '進入本單位年限';
  FTitleArray[4].zd := 'bmdm_mc';
  FTitleArray[4].xs := '部門';
  FTitleArray[5].zd := 'gwdm_mc';
  FTitleArray[5].xs := '崗位';
  FTitleArray[6].zd := 'hyzkdm_mc';
  FTitleArray[6].xs := '婚姻狀況';
  FTitleArray[7].zd := 'jszcdm_mc';
  FTitleArray[7].xs := '技術職稱';
  FTitleArray[8].zd := 'xldm_mc';
  FTitleArray[8].xs := '學歷';

  //下面設置分類統計項目的下拉選擇框
  for i := 0 to high(FTitleArray) do
  begin
    cmbFlxm1.Items.Add(FTitleArray[i].xs);
    cmbFlxm2.Items.Add(FTitleArray[i].xs);
  end;
  cmbFlxm2.Items.Add('無項目');
  cmbFlxm1.ItemIndex := 0;
  CmbFlxm2.ItemIndex := high(FTitleArray) + 1;

  //下面按照分類項目生成人員資料的臨時表
  strSQL := '';
  strSQL := 'select xbdm_mc ,' + getZdSqlStr('age',FNlGroup)
      + ' as ageGroup,' + getZdSqlStr('WorkTime',FCjgzGroup)
      + ' as workGroup,'+ getZdSqlStr('InYear',FJrdwGroup)
      + ' as EnterGroup,BMDM_MC,GWDM_MC,HYZKDM_MC,JSZCDM_MC,XLDM_MC '
      + ' into TempJbzl from JbzlCx ' ;
  ADOQuery1.SQL.Clear ;
  ADOQuery1.SQL.Add(strSQL);
  try
    ADOQuery1.ExecSQL ;
  except
    ShowMessage('查詢數據庫時發生錯誤!');
  end;
  Button1Click(self);
end;

//根據數值字段的分類規則,將字段的值劃分到某一個分類中的sql條件
function TfrmRyxxtjfx.getZdSqlStr(zdm:string;
    zdsz:array of TTypeOfTimeSm):string;
var
  i:integer;
begin
  result:= '';
  for i := low(zdsz) to high(zdsz) do
  begin
    result := result + 'iif((' + zdm + '>=' + inttoStr(zdsz[i].min) +
      ') and (' + zdm +'<' + IntToStr(zdsz[i].max) + '),''' +
      zdsz[i].sm + ''',';
  end;
  for i := low(zdsz) to high(zdsz) do
  begin
    result := result + ')';
  end;
  if result = '' then
  begin
    result := zdm;
  end;
end;


procedure TfrmRyxxtjfx.Button1Click(Sender: TObject);
var
  strSQL :string;
begin
  if cmbFlxm1.ItemIndex = CmbFlxm2.ItemIndex then
  begin
    ShowMessage('主分類統計項目與第二分類統計分類項目相同!');
    CmbFlxm2.SetFocus ;
    exit;
  end;

  //下面根據用戶選擇的分類統計項目進行
  if CmbFlxm2.ItemIndex = high(FTitleArray) + 1 then//第二分類項目為空
  begin
    strSQL := 'SELECT ' + FTitleArray[cmbFlxm1.itemIndex].zd +
              ',Count(xbdm_mc) as 人數' +
            ' FROM TempJbzl ' +
            ' GROUP BY ' + FTitleArray[cmbFlxm1.itemIndex].zd ;
  end
  else
  begin
    strSQL := ' TRANSFORM Count(xbdm_mc) ' +
            'SELECT '+ FTitleArray[cmbFlxm1.itemIndex].zd +
            ',Count(xbdm_mc) as 合計 FROM TempJbzl ' +
            ' GROUP BY ' + FTitleArray[cmbFlxm1.itemIndex].zd +
            ' PIVOT ' +  FTitleArray[cmbFlxm2.itemIndex].zd ;
  end;
  ADODataSet1.Active := False ;
  ADODataSet1.CommandText := strSQL ;
  ADODataSet1.Active := true;
  DBGrid1.Columns[0].Title.Caption := FTitleArray[cmbFlxm1.itemIndex].xs ;
  dbgrid1.Columns[0].Width := 100;
  SynSeries ;
end;

//同步圖表和查詢結果的數據
procedure TfrmRyxxtjfx.SynSeries;
var
  i,j :integer;
  max:double;
begin
  if ADODataSet1.IsEmpty then  //查詢結果為空
  begin
    exit;
  end;

  max := 0;
  if CmbFlxm2.ItemIndex = high(FTitleArray) + 1 then //第二分類項目為空
  begin
    ADODataSet1.First ;
    i:=0;
    ChartfxBar.OpenDataEx(COD_VALUES,1,ADODataSet1.RecordCount);
    ChartfxBar.ThisSerie:=0;
    ChartfxPie.OpenDataEx(COD_VALUES,1,ADODataSet1.RecordCount);
    ChartfxPie.ThisSerie:=0;
    while not ADODataSet1.Eof do   //循環所有查詢到的記錄
    begin
      if ADODataSet1.Fields[1].Value = null then  //字段值為空值
      begin
        ChartfxBar.Value[i]:=0 ;
        ChartfxPie.Value[i]:=0 ;
      end
      else  //字段值不為空值
      begin
        if ADODataSet1.Fields[1].Value >max then
        begin
          max := ADODataSet1.Fields[1].Value;
        end;
        ChartfxBar.Value[i]:=ADODataSet1.Fields[1].Value ;
        ChartfxPie.Value[i]:=ADODataSet1.Fields[1].Value ;
      end;//if ADODataSet1.Fields[1].Value =null
      ChartfxBar.Legend[i]:=ADODataSet1.Fields[0].Value ;
      ChartfxBar.Adm[CSA_MAX] := max ;
      ChartfxPie.Legend[i]:=ADODataSet1.Fields[0].Value ;
      inc(i);
      ADODataSet1.Next ;
    end;//while not ADODataSet1.Eof
    ChartfxBar.Title[CHART_LEFTTIT]:= '人數';
    ChartfxBar.Title[CHART_BOTTOMTIT]:= cmbFlxm1.Text;
    ChartfxPie.Title[CHART_LEFTTIT]:= '人數';
    ChartfxPie.Title[CHART_BOTTOMTIT]:= cmbFlxm1.Text;
    ChartfxBar.CloseData(COD_VALUES);
    ChartfxPie.CloseData(COD_VALUES);
  end
  else  //第二分類項目不為空
  begin
    ADODataSet1.First ;
    i:=0;
    ChartfxBar.OpenDataEx(COD_VALUES,
      ADODataSet1.FieldCount-2,ADODataSet1.RecordCount);
    ChartfxPie.OpenDataEx(COD_VALUES,1,ADODataSet1.RecordCount);
    while not ADODataSet1.Eof do   //循環所有查詢到的記錄
    begin
      //下面為ChartfxPie賦值
      ChartfxPie.ThisSerie:= 0;
      if ADODataSet1.Fields[1].Value = null then
      begin
        ChartfxPie.Value[i]:=0 ;
      end
      else
      begin
        ChartfxPie.Value[i] := ADODataSet1.Fields[1].Value ;
      end;
      ChartfxPie.Legend[i] := ADODataSet1.Fields[0].Name ;
      //下面為ChartfxBar賦值
      for j := 2 to ADODataSet1.FieldCount - 1 do
      begin
        ChartfxBar.ThisSerie:= j-2;
        if ADODataSet1.Fields[j].Value =null then
        begin
          ChartfxBar.Value[i]:=0 ;
        end
        else
        begin
          if ADODataSet1.Fields[j].Value >max then
          begin
            max := ADODataSet1.Fields[j].Value;
          end;
          ChartfxBar.Value[i]:=ADODataSet1.Fields[j].Value ;
        end;
      end;
      ChartfxBar.Legend[i]:=ADODataSet1.Fields[0].Name ;
      ChartfxBar.Adm[CSA_MAX] := max ;
      inc(i);
      ADODataSet1.Next ;
    end;//while not ADODataSet1.Eof
    for j := 2 to ADODataSet1.FieldCount - 1 do
    begin
      ChartfxBar.SerLeg[j-2] := ADODataSet1.Fields[j].DisplayName;
    end;
    ChartfxBar.Title[CHART_LEFTTIT]:= '人數';
    ChartfxBar.Title[CHART_BOTTOMTIT]:=cmbFlxm1.Text;
    ChartfxPie.Title[CHART_LEFTTIT]:= '人數';
    ChartfxPie.Title[CHART_BOTTOMTIT]:= cmbFlxm1.Text;
    ChartfxPie.CloseData(COD_VALUES);
    ChartfxBar.CloseData(COD_VALUES);
  end;// if CmbFlxm2.ItemIndex = high(FTitleArray) + 1
end;

procedure TfrmRyxxtjfx.FormClose(Sender: TObject;
  var Action: TCloseAction);
var
  strSQL: string;
begin
  ADOQuery1.SQL.Clear ;
  strSQL := 'drop table TempJbzl';
  ADOQuery1.SQL.Add(strSQL);//刪除查詢結果臨時表
  try
    ADOQuery1.ExecSQL ;
  except
  end;
  Action:= caFree; 
end;

procedure TfrmRyxxtjfx.Button2Click(Sender: TObject);
begin
  Close ;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本 国产 欧美色综合| 日韩女优电影在线观看| 欧美精品 国产精品| 欧美激情在线观看视频免费| 亚洲国产精品久久人人爱蜜臀 | 久久午夜羞羞影院免费观看| 国产精品久久久久久久久久免费看 | 欧美久久久久中文字幕| 中文字幕一区免费在线观看| 麻豆成人免费电影| 欧洲一区在线观看| 欧美韩国日本综合| 韩国中文字幕2020精品| 欧美高清www午色夜在线视频| 亚洲三级在线播放| 丰满岳乱妇一区二区三区| 欧美高清视频一二三区 | 在线欧美小视频| 国产精品全国免费观看高清| 国产乱码精品一区二区三区忘忧草| 欧美日韩精品一区二区| 亚洲黄色尤物视频| 94色蜜桃网一区二区三区| 国产丝袜欧美中文另类| 国产一区二区三区四区五区美女| 日韩三级视频在线看| 免费不卡在线视频| 欧美一区二区播放| 青青草成人在线观看| 欧美剧情电影在线观看完整版免费励志电影| 亚洲欧洲制服丝袜| 91色综合久久久久婷婷| 亚洲三级在线观看| 欧美性感一类影片在线播放| 亚洲国产另类精品专区| 欧美日本一道本在线视频| 亚洲大片一区二区三区| 在线成人免费视频| 91久久线看在观草草青青| 一区视频在线播放| 91黄色在线观看| 亚洲午夜三级在线| 3d动漫精品啪啪一区二区竹菊| 日韩中文字幕亚洲一区二区va在线| 8v天堂国产在线一区二区| 麻豆极品一区二区三区| 久久精品男人天堂av| 97精品久久久午夜一区二区三区| 亚洲老司机在线| 欧美色爱综合网| 秋霞成人午夜伦在线观看| 久久综合九色综合欧美98 | 国产精品视频观看| 在线一区二区三区四区五区| 午夜国产精品影院在线观看| 欧美一卡在线观看| 国产aⅴ精品一区二区三区色成熟| 亚洲人成网站色在线观看| 欧美天天综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲成人激情综合网| 日韩欧美一区二区不卡| 风间由美一区二区三区在线观看| 亚洲影视资源网| 蜜桃久久久久久久| 国产欧美日韩中文久久| 色综合视频在线观看| 日本成人中文字幕在线视频| 久久久www成人免费无遮挡大片| 99视频在线观看一区三区| 天堂影院一区二区| 国产精品网站在线播放| 欧美一区二区三区在线观看视频| 国产精品77777| 亚洲高清免费视频| 欧美激情中文字幕一区二区| 91麻豆精品国产91久久久更新时间 | 欧美—级在线免费片| 精品视频在线免费观看| 成人午夜在线播放| 免费成人美女在线观看| 一区二区三区在线免费观看| 精品久久人人做人人爱| 欧美午夜片在线观看| 成人黄色av电影| 奇米影视一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美va在线播放| 欧美三级一区二区| 99久久婷婷国产| 国产在线日韩欧美| 蜜臀精品久久久久久蜜臀| 亚洲影院在线观看| 亚洲久本草在线中文字幕| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩有码一区二区三区| 亚洲激情第一区| |精品福利一区二区三区| 久久婷婷久久一区二区三区| 日韩欧美一区二区在线视频| 欧美三级日韩三级国产三级| 色婷婷综合久久久中文一区二区 | 国产精品视频免费| 久久婷婷国产综合精品青草| 日韩欧美一级二级| 日韩亚洲欧美在线| 欧美一区二区三区色| 欧美人成免费网站| 欧美另类变人与禽xxxxx| 国产欧美精品国产国产专区| 日韩精品专区在线影院观看| 日韩一区二区电影在线| 欧美精品自拍偷拍动漫精品| 欧美日韩综合不卡| 欧美日韩综合在线免费观看| 欧美日韩国产另类一区| 欧美老肥妇做.爰bbww| 91麻豆精品国产91久久久使用方法| 欧美视频一区二区三区在线观看| 欧洲一区二区三区在线| 欧美色图片你懂的| 91精品国产丝袜白色高跟鞋| 日韩视频免费直播| 精品99999| 日本一区二区免费在线观看视频| 久久久久久久一区| 国产精品久久一卡二卡| 中文字幕一区二区在线播放| 亚洲情趣在线观看| 视频一区二区三区中文字幕| 免费人成在线不卡| 国产不卡视频在线播放| 成人福利视频在线| 欧美午夜精品一区二区三区 | 国产欧美日韩精品a在线观看| 国产精品视频在线看| 一区二区三区四区av| 天堂成人免费av电影一区| 蜜桃视频在线观看一区| 福利一区二区在线观看| 在线精品观看国产| 欧美电视剧在线观看完整版| 国产精品久久久久一区二区三区共| 亚洲视频在线观看一区| 午夜视黄欧洲亚洲| 国产乱码精品一区二区三区五月婷| 不卡的av中国片| 欧美精品1区2区| 中文字幕精品综合| 国产成人精品免费在线| 91高清视频免费看| 26uuu成人网一区二区三区| 日韩理论在线观看| 久久丁香综合五月国产三级网站| 波多野结衣在线一区| 91精品国产综合久久精品app| 国产精品视频一区二区三区不卡| 亚洲.国产.中文慕字在线| 国产一二三精品| 欧美午夜精品一区二区蜜桃 | 在线成人av影院| 国产精品久久久久四虎| 美女一区二区三区| 日本韩国精品一区二区在线观看| 精品国产91久久久久久久妲己| 亚洲欧美日韩中文字幕一区二区三区| 琪琪久久久久日韩精品| 91麻豆成人久久精品二区三区| 欧美va亚洲va国产综合| 亚洲资源在线观看| 99久久99精品久久久久久| 欧美成人三级电影在线| 亚洲一区二区三区四区在线| 丁香网亚洲国际| 精品国产乱码久久久久久久久 | ...中文天堂在线一区| 狠狠色丁香婷婷综合| 欧美日韩成人综合天天影院 | 在线免费不卡电影| 欧美激情在线看| 国产美女主播视频一区| 欧美一区二区日韩| 午夜精品一区二区三区电影天堂| 色综合一区二区| 久久久99精品久久| 久久不见久久见免费视频7| 欧美精品自拍偷拍| 亚洲第一精品在线| 欧美日韩免费不卡视频一区二区三区| 国产精品久久久久一区二区三区共| 国产精品12区| 国产婷婷一区二区| 国产高清在线精品| 国产日韩综合av| 国产91精品露脸国语对白| 日韩福利视频网| 欧美日韩成人一区| 午夜精彩视频在线观看不卡| 欧美日韩在线播放一区| 亚洲一卡二卡三卡四卡五卡|