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

📄 uworkage.pas

📁 说明: 比较简单的人事档案管理程序,包含了人事档案的大部分功能,做人事档案的兄弟可以看看. 本程序类型:delphi7 + Access2000 桌面数据库 初始用户名/密码:admin
💻 PAS
字号:
unit UWorkAge;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, dbgridehimpexp, DBGrids, DB, StdCtrls, ADODB, Buttons, dateutils, Mask,
  DBGridEh;

type
  TForm_WorkAge = class(TForm)
    DS6: TDataSource;
    ADOQWorkAge: TADOQuery;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    SpeedButton1: TSpeedButton;
    ADOQWorkAgeField: TStringField;
    ADOQWorkAgeemployee_startworkdate: TWideStringField;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ADOQWorkAgeemployee_name: TWideStringField;
    ADOQWorkAgeemployee_id: TWideStringField;
    ADOQWorkAgeemployee_firstdept: TWideStringField;
    ADOQWorkAgeemployee_seconddept: TWideStringField;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    DBGridWorkAge: TDBGridEh;
    procedure FormShow(Sender: TObject);
    procedure ADOQWorkAgeCalcFields(DataSet: TDataSet);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
  private
    { Private declarations }
    daynumber: integer; //各员工的工龄(天数)
    setDaynumber: integer; //要查询的工龄转成天数
  public
    { Public declarations }
  end;

var
  Form_WorkAge: TForm_WorkAge;

implementation
uses Umain;
{$R *.dfm}

procedure TForm_WorkAge.FormShow(Sender: TObject);
//var i: integer;
begin
  setdaynumber := 0;
  //i := DaysInMonth(Now());
 // edit1.Text := inttostr(i);
  try
    with ADOQWorkAge do
    begin
      CLOSE;
      SQL.Clear;
      SQL.Add('SELECT Employee_id,Employee_Name,Employee_FirstDept,Employee_SecondDept,Employee_StartWorkDate from Employee');
      open;
    end;
  except
    beep;
    showmessage('打开职工表失败,请检查数据库是否存在');
  end;
end;

procedure TForm_WorkAge.ADOQWorkAgeCalcFields(DataSet: TDataSet);
var fieldvalue: string;
  yearnumber: integer;
  monthnumber: integer;
  datenumber: integer;
begin
  try
    with ADOQWorkAge do
    begin
  //取得参加工作总天数
      daynumber := DaysBetween(dateof(now), dateof(strtodate(FieldByName('Employee_StartWorkDate').AsString)));
  //将参加工作总天数转为年月日形式
      yearnumber := daynumber div 365;
      monthnumber := (daynumber - yearnumber * 365) div 30;
      datenumber := daynumber - yearnumber * 365 - monthnumber * 30;
  //设置字段显示格式
      if yearnumber > 0 then
      begin
        fieldvalue := inttostr(yearnumber) + ' 年';
      end;
      if (yearnumber > 0) and (monthnumber = 0) and (datenumber > 0) then
        fieldvalue := fieldvalue + ' 零';
      if monthnumber > 0 then
        fieldvalue := fieldvalue + inttostr(monthnumber) + ' 月';
      if datenumber > 0 then
        fieldvalue := fieldvalue + inttostr(datenumber) + ' 日';
    //赋值到字段
      fieldByName('工龄').AsString := fieldvalue;
    end;
  except
    showmessage('打开职工表失败,请检查数据库文件是否存在');
  end;
end;

procedure TForm_WorkAge.SpeedButton1Click(Sender: TObject);
begin

  setdaynumber := 0; //初始化
  if edit1.Text = '' then edit1.Text := '0';
  setdaynumber := Setdaynumber + strtoint(edit1.text) * 365;
  if edit2.Text = '' then edit2.Text := '0';
  setdaynumber := Setdaynumber + strtoint(edit2.text) * 30;
  if edit3.Text = '' then edit3.Text := '0';
  setdaynumber := Setdaynumber + strtoint(edit3.text);
  //执行查询
  with ADOQWorkAge do
  begin
    CLOSE;
    SQL.Clear;
    SQL.Add('SELECT Employee_id,Employee_Name,Employee_FirstDept,Employee_SecondDept,Employee_StartWorkDate from Employee');
    sql.Add('where employee_startWorkDate <''' + dateToStr(now - setdaynumber) + '''');
    open;
  end;

end;

procedure TForm_WorkAge.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9']) then
    key := #0;
end;

procedure TForm_WorkAge.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9']) then
    key := #0;
end;

procedure TForm_WorkAge.SpeedButton2Click(Sender: TObject);
var ExpClass: TDBGridEhExportClass;
  Ext: string;
begin
  if ADOQWorkAge.RecordCount = 0 then
  begin
    beep;
    showmessage('当前没有任何记录!');
    exit;
  end;
  Form_main.SaveDialog1.FileName := 'file1';
  if Form_main.SaveDialog1.Execute then
  begin
    case Form_main.SaveDialog1.FilterIndex of
      1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
      2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
      3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
      4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
      5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
    else
      ExpClass := nil; Ext := '';
    end;
    if ExpClass <> nil then
    begin
      if UpperCase(Copy(Form_main.SaveDialog1.FileName, Length(Form_main.SaveDialog1.FileName) - 2, 3)) <>
        UpperCase(Ext) then
        Form_main.SaveDialog1.FileName := Form_main.SaveDialog1.FileName + '.' + Ext;
      SaveDBGridEhToExportFile(ExpClass, DBGridWorkAge,
        Form_main.SaveDialog1.FileName, true);
    end;
  end;
end;

procedure TForm_WorkAge.SpeedButton3Click(Sender: TObject);
begin
  try
    with ADOQWorkAge do
    begin
      CLOSE;
      SQL.Clear;
      SQL.Add('SELECT Employee_id,Employee_Name,Employee_FirstDept,Employee_SecondDept,Employee_StartWorkDate from Employee');
      open;
    end;
  except
    beep;
    showmessage('打开职工表失败,请检查数据库是否存在');
  end;
end;

end.

⌨️ 快捷键说明

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