📄 umain.~pas
字号:
unit Umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TFrmMain = class(TForm)
BtnManEmployee: TButton;
BtnManDuty: TButton;
BtnQueryDuty: TButton;
BtnStatDuty: TButton;
BtnQuit: TButton;
DbCompDuty: TDatabase;
procedure BtnManEmployeeClick(Sender: TObject);
procedure BtnManDutyClick(Sender: TObject);
procedure BtnQuitClick(Sender: TObject);
procedure BtnQueryDutyClick(Sender: TObject);
procedure BtnStatDutyClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmMain: TFrmMain;
implementation
uses UmanEmployee, UmanDuty, UDlgQueryDuty, UFrmDutyQueryed, UStatDuty,
UFrmDutyStat;
{$R *.dfm}
procedure TFrmMain.BtnManEmployeeClick(Sender: TObject);
begin
//如果数据集是打开的,则关闭它
if FrmManEmp.TblEmployee.Active then
FrmManEmp.TblEmployee.Active:=False;
//重新打开记录集,刷新数据
FrmManEmp.TblEmployee.Active:=True;
FrmManEmp.ShowModal;
end;
procedure TFrmMain.BtnManDutyClick(Sender: TObject);
begin
//如果数据集是打开的,则关闭它
if FrmManDuty.TblEmployee.Active then
FrmManDuty.TblEmployee.Active:=False;
if FrmManDuty.TblOnDuty.Active then
FrmManDuty.TblOnDuty.Active:=False;
//刷新数据
FrmManDuty.TblEmployee.Active:=True;
FrmManDuty.TblOnDuty.Active:=True;
FrmManDuty.ShowModal;
end;
procedure TFrmMain.BtnQuitClick(Sender: TObject);
begin
Close;
end;
procedure TFrmMain.BtnQueryDutyClick(Sender: TObject);
var
strEmpID:String;
strDateStart,strDateEnd:String;
TblEmp:TTable;
begin
if DlgQueryDuty.ShowModal=mrOK then
begin
//查找是否存在该员工
TblEmp:=TTable.Create(self);
TblEmp.DatabaseName:='CompDuty';
TblEmp.TableName:='Employee';
TblEmp.Filtered:=True;
TblEmp.Filter:='Name='''+Trim(DlgQueryDuty.EditName.Text)+'''';
TblEmp.Open;
if TblEmp.Eof then
begin
Application.MessageBox('没有找到相应的员工!','系统提示');
Exit;//退出
end else
strEmpID:=TblEmp.FieldByName('ID').AsString;
TblEmp.Close;
strDateStart:=FormatDateTime('yyyy-mm-dd 00:00:00',DlgQueryDuty.DTPickerStart.Date);
strDateEnd:=FormatDateTime('yyyy-mm-dd 12:00:00',DlgQueryDuty.DTPickerEnd.Date);
with FrmDutyQueryed.TblQuery do
begin
//如果表处于打开状态,先关闭它
if Active then
Active:=False;
Filter:='EmpID='+strEmpID+' and DutyDate >='''+strDateStart;
Filter:=Filter+''' and DutyDate <='''+strDateEnd+'''';
Filtered:=True;
Active:=True;
//查看是否找到相应的记录?如果找到,则显示这条记录
if not Eof then
begin
FrmDutyQueryed.LblQuery.Caption:='查询结果:出勤'+IntToStr(RecordCount)+'次';
FrmDutyQueryed.ShowModal;
end
else
Application.MessageBox('没有找到相应的出勤记录!','系统提示');
end;
end;
end;
procedure TFrmMain.BtnStatDutyClick(Sender: TObject);
var
strDateStart,strDateEnd,strSql:String;
begin
if DlgStatDuty.ShowModal=mrOK then
begin
//时间后面用了两个冒号(::),这是因为如果只用一个冒号,BDE会认为冒号后面
//的字符串是代表一个参数名称,从而导致程序执行失败。
strDateStart:=FormatDateTime('yyyy-mm-dd 00::00::00',DlgStatDuty.DTPickerStart.Date);
strDateEnd:=FormatDateTime('yyyy-mm-dd 12::00::00',DlgStatDuty.DTPickerEnd.Date);
with FrmDutyStat.QueryStat do
begin
//如果表处于打开状态,先关闭它
if Active then
Active:=False;
strSql:='SELECT Employee.Name,Count(*) as Times '
+'FROM Onduty,Employee '
+'WHERE (Onduty.EmpID = Employee.ID) and DutyDate between #'
+strDateStart+'# and #'+strDateEnd+'# '
+'GROUP BY Employee.Name';
SQL.Clear;
SQL.Add(strSql);
Open;
//查看是否找到相应的记录?如果找到,则显示这条记录
if not Eof then
begin
FrmDutyStat.ShowModal;
end
else
Application.MessageBox('没有找到相应的出勤记录!','系统提示');
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -