?? 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 + -