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

📄 analysefrm.pas

📁 结合读卡器使用。程序中有按迟到时间长短自动开罚单功能
💻 PAS
字号:
unit Analysefrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, DbChart, StdCtrls, ComCtrls,
  Buttons, DataModule1,Series;

type
  TAnalyseForm = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBChart1: TDBChart;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    ComboBox2: TComboBox;
    Series1: TBarSeries;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure TabSheet1Show(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure SpeedButton25Click(Sender: TObject);
  private
    function GetLateNum(AName:String;AMode:String):Word;   //得到迟到次数
    function GetLatePenalty(AName:String):Word;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  AnalyseForm: TAnalyseForm;

implementation


{$R *.dfm}

procedure TAnalyseForm.TabSheet1Show(Sender: TObject);
begin
   DateTimePicker2.Date :=Date;
   ComboBox2.Text :='迟到';
   ComboBox2.ItemIndex :=1;
end;

procedure TAnalyseForm.BitBtn1Click(Sender: TObject);
var
   SName:String;
   Num:Word;
begin
   with DM.TBWorker_L do
   begin
      DisableConstraints;
      Open;
      First;
      while not eof do
      begin
         SName:=FieldByName('M_Name').AsString;
         case ComboBox2.ItemIndex of
         0:Num:=GetLateNum(SName,'正点');  //
         1:Num:=GetLateNum(SName,'迟到');  //
         2:Num:=GetLateNum(SName,'缺勤');  //
         3:Num:=GetLatePenalty(SName);     //
         end;
         Edit;
         FieldByName('M_LateNum').AsInteger:=Num;
         Post;
         Next;
      end;
      EnableConstraints;
   end;

end;

function TAnalyseForm.GetLateNum(AName: String;AMode:String):Word;  //返回迟到或缺勤次数
begin

    with DM.qryKaoqin do
      begin
         Close;
         SQL.Clear;
         SQL.Add('Select K_Name,K_Date,K_Penalty from Kaoqin');
         SQL.Add('Where (K_Name=:varName) and (K_Date>=:varDate1) and (K_Date<:varDate2)');
         SQL.Add('and K_Penalty>=:varPenalty1 and K_Penalty<:varPenalty2');
         Params[0].AsString :=AName;
         params[1].AsDateTime:=DateTimePicker1.Date;
         Params[2].AsDateTime:=DateTimepicker2.Date;
         if AMode='正点' then
         begin
            Params[3].AsInteger :=0;
            Params[4].AsInteger :=1;
         end;
         if AMode='迟到' then
         begin
            Params[3].AsInteger :=10;
            Params[4].AsInteger :=30;
         end;
         if AMode='缺勤' then
         begin
            Params[3].AsInteger :=30;
            Params[4].AsInteger :=100;
         end;  
         Open;
         Result:=RecordCount;
         Close;
   end;
end;

function TAnalyseForm.GetLatePenalty(AName: String): Word;
var
   Pnum:word;
begin
   Pnum:=0;
   with DM.qryKaoqin do
      begin
         Close;
         SQL.Clear;
         SQL.Add('Select K_Name,K_Date,K_Penalty from Kaoqin');
         SQL.Add('Where (K_Name=:varName) and (K_Date>=:varDate1) and (K_Date<:varDate2)');
         Params[0].AsString :=AName;
         params[1].AsDateTime:=DateTimePicker1.Date;
         Params[2].AsDateTime:=DateTimepicker2.Date;
         Open;
         First;
         while not eof do
         begin
            Pnum:=Pnum+FieldByName('K_Penalty').AsInteger;
            Next;
         end;
         Result:=Pnum;
         Close;
   end;
end;

procedure TAnalyseForm.Label4Click(Sender: TObject);
var
   Num:Word;
begin
    Num:=GetLateNum('001','正点');
    Label2.Caption :=InttoStr(Num);
end;

procedure TAnalyseForm.BitBtn2Click(Sender: TObject);
begin
    DM.TBWorker_L.Close;
end;

procedure TAnalyseForm.SpeedButton25Click(Sender: TObject);
begin
    DBChart1.PreviousPage;
    DBChart1.NextPage;
end;

end.

⌨️ 快捷键说明

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