📄 kaomodify.pas
字号:
unit kaomodify;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DB, DBTables, Buttons, ComCtrls, Grids, DBGrids,
ExtCtrls, Gauges, Spin;
type
TForm25 = class(TForm)
GroupBox1: TGroupBox;
seek_by_time: TCheckBox;
Label1: TLabel;
seek_start_time: TMaskEdit;
seek_by_person: TCheckBox;
Label2: TLabel;
seek_end_time: TMaskEdit;
Label3: TLabel;
seek_person_id: TMaskEdit;
Label4: TLabel;
seek_person_name: TEdit;
T_person: TTable;
DS_person: TDataSource;
PageControl1: TPageControl;
SpeedButton1: TSpeedButton;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
GroupBox2: TGroupBox;
Label5: TLabel;
Label6: TLabel;
DBGrid1: TDBGrid;
B_delete_attend: TButton;
B_seek_io: TButton;
i_io_time: TMaskEdit;
i_in_out: TRadioGroup;
B_add_all: TButton;
B_add_depart: TButton;
B_add_person: TButton;
Label8: TLabel;
i_io_person_id: TMaskEdit;
Label9: TLabel;
i_io_person_name: TEdit;
Gauge1: TGauge;
T_depart: TTable;
DS_depart: TDataSource;
T_counter: TTable;
T_attendance: TTable;
DS_attendance: TDataSource;
GroupBox3: TGroupBox;
Label10: TLabel;
i_overtime_date: TMaskEdit;
Label11: TLabel;
i_overtime_hour: TSpinEdit;
Label12: TLabel;
Label13: TLabel;
i_overtime_person_id: TMaskEdit;
Label14: TLabel;
i_overtime_person_name: TEdit;
Label15: TLabel;
B_overtime_add: TButton;
B_delete_overtime: TButton;
B_seek_overtime: TButton;
T_overtime: TTable;
DS_overtime: TDataSource;
DBGrid2: TDBGrid;
GroupBox4: TGroupBox;
Label16: TLabel;
Label17: TLabel;
i_leave_start_time: TMaskEdit;
i_leave_end_time: TMaskEdit;
Label18: TLabel;
i_leave_person_id: TMaskEdit;
i_leave_person_name: TEdit;
Label19: TLabel;
i_leave_reason: TMemo;
B_leave_add: TButton;
Label20: TLabel;
DBGrid3: TDBGrid;
T_leave: TTable;
DS_leave: TDataSource;
B_delete_leave: TButton;
B_seek_leave: TButton;
GroupBox5: TGroupBox;
Label7: TLabel;
Label21: TLabel;
i_errand_start_time: TMaskEdit;
Label22: TLabel;
Label23: TLabel;
i_errand_end_time: TMaskEdit;
i_errand_person_id: TMaskEdit;
i_errand_person_name: TEdit;
Label24: TLabel;
i_errand_description: TMemo;
B_errand_add: TButton;
Label25: TLabel;
DBGrid4: TDBGrid;
B_delete_errand: TButton;
B_seek_errand: TButton;
T_errand: TTable;
DS_errand: TDataSource;
procedure FormCreate(Sender: TObject);
procedure seek_person_idChange(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure i_io_person_idChange(Sender: TObject);
procedure io_add(Person_id:String);
procedure B_add_personClick(Sender: TObject);
procedure B_add_departClick(Sender: TObject);
procedure B_add_allClick(Sender: TObject);
procedure B_delete_attendClick(Sender: TObject);
procedure B_seek_ioClick(Sender: TObject);
procedure i_overtime_person_idChange(Sender: TObject);
procedure B_overtime_addClick(Sender: TObject);
procedure B_delete_overtimeClick(Sender: TObject);
procedure B_seek_overtimeClick(Sender: TObject);
procedure TabSheet3Show(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
procedure i_leave_person_idChange(Sender: TObject);
procedure B_leave_addClick(Sender: TObject);
procedure B_delete_leaveClick(Sender: TObject);
procedure B_seek_leaveClick(Sender: TObject);
procedure TabSheet4Show(Sender: TObject);
procedure i_errand_person_idChange(Sender: TObject);
procedure B_errand_addClick(Sender: TObject);
procedure B_delete_errandClick(Sender: TObject);
procedure B_seek_errandClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form25: TForm25;
implementation
uses kaoqi;
{$R *.dfm}
procedure TForm25.FormCreate(Sender: TObject);
begin
Seek_start_time.Text:=DateToStr(now-30);//设置开始时间为前一个月
Seek_end_time.Text:=DateToStr(now); //设置结束时间为当前时间
end;
procedure TForm25.seek_person_idChange(Sender: TObject);
begin
T_person.Filter:='ID='''+Seek_person_id.Text+''''; //设置过滤条件,提取教师信息
T_person.Filtered:=True; //激活过滤器
T_person.Open; //打开教师信息表
if T_person.RecordCount=1 then //判断教师记录是否存在
Seek_person_name.Text:=T_person['NAME'] //显示教师姓名
else
Seek_person_name.Text:=''; //如果不存在,清除教师姓名的显示
T_person.Close; //关闭教师信息表
end;
procedure TForm25.SpeedButton1Click(Sender: TObject);
begin
form25.Hide; //关闭当前界面
form22.show; //显示考勤子系统界面
end;
procedure TForm25.TabSheet1Show(Sender: TObject);
begin
i_io_time.Text:=DateTimeToStr(now); //界面初始化时,设置出入时间为当前时间
T_attendance.Open; //打开考勤记录表
end;
procedure TForm25.i_io_person_idChange(Sender: TObject); //输入教师号时,检索相应的信息
begin
T_person.Filter:='ID='''+i_io_person_id.Text+''''; //输入教师号时,设置教师过滤条件
T_person.Filtered:=True; //激活过滤器
T_person.Open; //打开教师信息表
if T_person.RecordCount=1 then //如果教师存在
begin
i_io_person_name.Text:=T_person['NAME']; //提取教师姓名,赋给i_io_person_name.text
end
else
i_io_person_name.Text:=''; //否则,清空教师姓名显示
T_person.Close; //关闭教师信息表
end;
procedure TForm25.io_add(Person_id:String); //添加出勤记录子程序
var
counter:Integer; //变量申明,用于计数的变量
in_out:String; //变量申明,用于保存出入情况
io_time:TDateTime; //变量申明,用于保存出入时间
begin
//记录编号
T_counter.Filter:='ID=''T'''; //设置过滤器,提取计数值
T_counter.Filtered:=True; //激活过滤器
T_counter.Open; //打开计数表
counter:=T_counter['COUNTER_VALUE']; //获取计数值
Inc(counter); //给计数变量增值
T_counter.Edit; //编辑计数表
T_counter['COUNTER_VALUE']:=counter; //保存当前计数
T_counter.Post; //提交修改
T_counter.Close; //关闭计数器表
//添加记录
if i_in_out.ItemIndex=0 then //判断确定出入情况
in_out:='O' //出的赋值
else
in_out:='I'; //入的赋值
io_time:=StrToDateTime(i_io_time.Text); //转换出入时间数据类型
T_attendance.Filtered:=False; //取消过滤器
T_attendance.Open; //打开考勤记录表
T_attendance.AppendRecord([counter,Person_id,in_out,io_time]); //追加考勤记录
end;
procedure TForm25.B_add_personClick(Sender: TObject); //追加单个教师考勤记录
begin
if length(i_io_person_name.Text)>0 then //判断教师是否存在
begin
io_add(i_io_person_id.Text); //追加单个教师记录
end;
end;
procedure TForm25.B_add_departClick(Sender: TObject); //追加系别教师考勤记录
var
i,n:integer; //用于保存记录条数的变量
begin
T_person.Filter:='DEPARTMENT='''+''' AND STATE=''T'''; //设置过滤条件
T_person.Filtered:=True; //激活过滤器
T_person.Open; //打开教师信息表
n:=T_person.RecordCount; //获取教师人数
i:=0; //初始化已添加记录条数
Gauge1.Progress:=0; //初始化进度表
T_person.First; //跳到第一条记录
while not T_person.Eof do //如果不是教师信息表的末尾就对数据表中的所有记录进行处理
begin
io_add(T_person['ID']); //添加当前教师出勤记录
T_person.Next; //跳到下一个教师记录
Inc(i); //已添加记录条数加1
Gauge1.Progress:=(100*i) div n; //显示进度
end;
T_person.Close; //处理完后关闭教师信息表
end;
procedure TForm25.B_add_allClick(Sender: TObject); //添加所有教师出勤记录
var
i,n:integer;
begin
T_person.Filter:='STATE=''T'''; //设置过滤条件,提取教师信息
T_person.filtered:=True; //激活过滤器
T_person.Open; //打开教师信息表
n:=T_person.RecordCount; //提取教师人数
i:=0; //初始化已添加记录条数
Gauge1.Progress:=0; //初始化进度条
T_person.First; //教师表的第一个记录
while not T_person.Eof do //如果不是到教师信息表的末尾,就进行下列的操作
begin
io_add(T_person['ID']); //添加当前员工考勤记录
T_person.Next; //跳到下一个员工记录
Inc(i); //已添加记录条数加1
Gauge1.Progress:=(100*i) div n; //显示进度
end;
T_person.Close; //关闭员工信息表
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -