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

📄 umain.~pas

📁 飞思科技的书不错
💻 ~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 + -