📄 uworkage.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 + -