datamod.~pas

来自「用户名:SYSTEM 密码:空 第一次运行请先恢复数据库 DATABAS」· ~PAS 代码 · 共 166 行

~PAS
166
字号
unit DataMod;

interface

uses
  SysUtils, Classes, DB, ADODB,forms,Windows,ComCtrls,DateUtils,dialogs;

Type
    tShortCut=Record
                 MenuID:String;
                 FuncName:String;
    end;
    tUserInfo=Record
                 UserID:String;
                 UserName:String;
                 UserPassword:String;
                 RightGroup:String;
                 ShortCut1:TShortCut;
                 ShortCut2:TShortCut;
                 ShortCut3:TShortCut;
                 ShortCut4:TShortCut;
    end;

    tRights=Record
                 Browser:Boolean;
                 AddRecord:Boolean;
                 Modify:Boolean;
                 Delete:Boolean;
    end;
    TItem=Class(TObject)
                ItemID:string;
                ItemCaption:String;
    end;

    TRule=Record
             ID:String;
             Description:String;
             Value:String;
             ValueType:String;
             Useed:Boolean;
    end;
    TClassInfo=Record
                    In1:String;
                    InRange1:String;
                    Out1:String;
                    OutRange1:String;
                    In2:String;
                    InRange2:String;
                    Out2:String;
                    OutRange2:String;
                    In3:string;
                    CardTimes:Integer;
                    FreeTime:Integer;
                    StdTime:Integer;
                    TotalTime:Integer;
                    IsDay:Boolean;
    end;
    TDayClassInfo=Record
                      In1:TDateTime;
                      InRange1:TDateTime;
                      Out1:TDateTime;
                      OutRange1:TDateTime;
                      In2:TDateTime;
                      InRange2:TDateTime;
                      Out2:TDateTime;
                      OutRange2:TDateTime;
                      In3:TDateTime;
                      CardTimes:Integer;
                      IsDay:Boolean;
                      FreeTime:Integer;
                      StdTime:Integer;
                      TotalTime:Integer;
                      IsError:Boolean;
    end;
type
  TfDataMod = class(TDataModule)
    adoQueDateTime: TADOQuery;
    adocon: TADOConnection;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
     UserInfo:TUserInfo;
     Function GetCurrentTime:TDateTime;
     Function TimeSubTract(const Time1:String;const Time2:String):Integer;
     Function TimeAdd(Const cTime:String;const Minutes:Integer):String;
     function  ValidTime(const strTime: String;const AllowEmpty:Boolean): Boolean;
     function  DateDiff(Const StartDate:TDateTime;const EndDate:TDateTime):Integer;
     Function RuleGet(Const ID:String):TRule;
     Function GetMachineType(Const MachineNO:Integer):String;

     Procedure ListDepartMent(Const List:TStrings);
     Function  GetClassInfo(Const ClassID:String):TClassInfo;
     Function  GetWorkersDayClassInfo(Const dDate:TDateTime;WorkerNo:String):TDayClassInfo;
     Function GetCompanyName(Const Style:Integer):String;
     Function SetCompanyName(Const Style:Integer;const CompanyName:String):Boolean;
     procedure PersonnelTreeIni(Const TreeView:TTreeview;Const ShowWorkers:Boolean);

     Function GetWorkersCardNo(const WorkerNo:String):String;
     Function GetWorkersNo(Const CardNo:String):String;
     Function GetWorkersDepartMentNo(const WorkerNo:String):String;
     Function calcLeaveInClass(const WorkerNo: string; const StartTime, EndTime: TDateTime): Integer;
     Function WorkerISLeaved(Const WorkerNo:String;Const dDate:TDateTime):Boolean;
end;

var
  fDataMod: TfDataMod;

implementation

{$R *.dfm}
function TfDataMod.CalcLeaveInClass(const WorkerNo: string;
  const StartTime, EndTime: TDateTime): Integer;
var
temStart,temEnd:TDateTime;
begin
     Result:=0;
     With TAdoQuery.Create(self) do
     Begin
           connection:=fdatamod.AdoCon;
           ParamCheck :=False;
           Sql.Add('Select * From Leave Where cWorkerNo='''+WorkerNo+'''');
           Sql.Add('And ((dStartDate between Convert(DateTime,'''+formatDateTime('yyyy/mm/dd hh:mm:ss',StartTime)+''')');
           Sql.Add('And Convert(dateTime,'''+formatdateTime('yyyy/mm/dd hh:mm:ss',EndTime)+''')');
           Sql.Add('And dEndDate between Convert(DateTime,'''+formatDateTime('yyyy/mm/dd hh:mm:ss',StartTime)+''')');
           Sql.Add('And Convert(dateTime,'''+formatdateTime('yyyy/mm/dd hh:mm:ss',EndTime)+'''))');
           Sql.Add('Or (convert(dateTime,'''+FormatDateTime('yyyy/mm/dd hh:mm:ss',StartTime)+''') between dStartDate and dEndDate');
           Sql.Add('Or convert(dateTime,'''+FormatDateTime('yyyy/mm/dd hh:mm:ss',EndTime)+''') between dStartDate and dEndDate)');
           Sql.Add(')');
           Open;
           While Not Eof do
           begin
              if FieldByName('dStartDate').AsDateTime<StartTime then
                  temStart:=StartTime
              else
                  temStart:=FieldByName('dStartDate').AsDateTime;
              if FieldByName('dEndDate').AsDateTime >EndTime then
                  temEnd:=EndTime
              else
                  temEnd:=FieldByName('dEndDate').AsDateTime ;
              Result:=Result+fdatamod.DateDiff(temStart,temEnd);
              Next;
           end;
           free;
     end;
end;

procedure TfDataMod.DataModuleCreate(Sender: TObject);
begin
   UserInfo.UserID :='';
   UserInfo.UserName :='';
   UserInfo.UserPassword :='';
end;

function TfDataMod.GetClassInfo(const ClassID: String): TClassInfo;
begin
     Result.CardTimes:=0;
     With TAdoQuery.Create(self) do
     Begin
          Connection:=AdoCon;
          ParamCheck :=False;
          Sql.Add('Select * From V_Class Where cClassNo='''+ClassID+'''');
          Open;
          if IsEmpty then Begin
             application.MessageBox(Pchar('⊿Τт

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?