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

📄 formdorset.pas

📁 pasa人力资源考勤管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit formdorset;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ToolWin, DBActns, ActnList, StdCtrls, Mask,
  Grids, DBGrids, ExtCtrls,EastRiver,PrjConst, CheckLst,Functions, GB2Big5,inifiles,
  DBCtrls, Db, ADODB, ImgList,shellapi, Buttons ;
const
  xorch=$555555;
  MYTRAY_MESSAGE=WM_USER+100;
  UniqueAppStr='EastRiver 980';
  arICID: array[0..2] of string=('D', 'C', ' ');
  arBoolean: array[Boolean]of char=('0', '1');
  arWeek: array[Boolean]of string=('', '*');
//  arDoorStates: array[0..5]of string=(SAEOI, SAUAeEuG, SEuG, SAEuG, SAAE, SAAA);

type
  Tformdoorset = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Bevel1: TBevel;
    GroupBox1: TGroupBox;
    edClockID: TEdit;
    cbRate: TComboBox;
    Label2: TLabel;
    Label3: TLabel;
    Label16: TLabel;
    cbPort: TComboBox;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    DataSource1: TDataSource;
    ADODataSet1: TADODataSet;
    ADODataSet1workno: TStringField;
    ADODataSet1cardno: TStringField;
    ADODataSet1name: TStringField;
    ADODataSet1dept: TStringField;
    ADODataSet1times: TDateTimeField;
    ADODataSet1reReader: TStringField;
    ADODataSet1mark: TStringField;
    ADODataSet1noid: TStringField;
    ADODataSet1photo: TStringField;
    Panel1: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label17: TLabel;
    Image2: TImage;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    DBText6: TDBText;
    DBText7: TDBText;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Panel2: TPanel;
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Image1: TImage;
    DBText3: TDBText;
    DBText8: TDBText;
    DBText9: TDBText;
    DBText10: TDBText;
    DBText11: TDBText;
    DBText12: TDBText;
    Label9: TLabel;
    DBText13: TDBText;
    DBText14: TDBText;
    Label15: TLabel;
    ADODataSet2: TADODataSet;
    DataSource2: TDataSource;
    ADODataSet2workno: TStringField;
    ADODataSet2cardno: TStringField;
    ADODataSet2name: TStringField;
    ADODataSet2dept: TStringField;
    ADODataSet2times: TDateTimeField;
    ADODataSet2reReader: TStringField;
    ADODataSet2mark: TStringField;
    ADODataSet2noid: TStringField;
    ADODataSet2photo: TStringField;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton6: TToolButton;
    ToolButton5: TToolButton;
    tbnfind: TToolButton;
    tbnprint: TToolButton;
    ToolButton4: TToolButton;
    ImageList1: TImageList;
    DBGrid5: TDBGrid;
    DBGrid4: TDBGrid;
    TabSheet5: TTabSheet;
    DBGrid2: TDBGrid;
    DBGrid3: TDBGrid;
    Splitter1: TSplitter;
    Label18: TLabel;
    DDorInit: TDataSource;
    ADorInit: TADODataSet;
    ADorInitworkno: TStringField;
    ADorInitcardno: TStringField;
    ADorInitname: TStringField;
    ADorInitreReader: TStringField;
    ADorInitmark: TStringField;
    ADorInitnoid: TStringField;
    ADorInitphoto: TStringField;
    Splitter2: TSplitter;
    Label19: TLabel;
    Label20: TLabel;
    Shape1: TShape;
    Shape2: TShape;
    ADorInitdept: TStringField;
    Panel3: TPanel;
    Msg: TLabel;
    DDorday: TDataSource;
    ADorInittimes: TDateTimeField;
    ADorday: TADODataSet;
    ADordayworkno: TStringField;
    ADordaycardno: TStringField;
    ADordayname: TStringField;
    ADordaydept: TStringField;
    ADordaydaytimes: TIntegerField;
    ADordayrq: TStringField;
    ADorday1: TADODataSet;
    DDorday1: TDataSource;
    ADorday1workno: TStringField;
    ADorday1cardno: TStringField;
    ADorday1name: TStringField;
    ADorday1dept: TStringField;
    ADorday1times: TDateTimeField;
    ADorday1reReader: TStringField;
    ADorday1mark: TStringField;
    ADorday1noid: TStringField;
    ADorday1photo: TStringField;
    Panel4: TPanel;
    Panel5: TPanel;
    Label21: TLabel;
    MaskEdit3: TMaskEdit;
    Label22: TLabel;
    Edit2: TEdit;
    Label29: TLabel;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    Label30: TLabel;
    Edit3: TEdit;
    Label27: TLabel;
    MaskEdit5: TMaskEdit;
    DateTimePicker2: TDateTimePicker;
    Label25: TLabel;
    Label26: TLabel;
    DateTimePicker1: TDateTimePicker;
    MaskEdit4: TMaskEdit;
    Label24: TLabel;
    Label23: TLabel;
    Label28: TLabel;
    ADormonthy: TADODataSet;
    ADormonthy1: TADODataSet;
    DDormonthy1: TDataSource;
    DDormonthy: TDataSource;
    ADormonthyworkno: TStringField;
    ADormonthycardno: TStringField;
    ADormonthydept: TStringField;
    ADormonthyname: TStringField;
    ADormonthymonthycount: TIntegerField;
    ADormonthymonthy: TStringField;
    ADormonthy1workno: TStringField;
    ADormonthy1cardno: TStringField;
    ADormonthy1name: TStringField;
    ADormonthy1dept: TStringField;
    ADormonthy1daytimes: TIntegerField;
    ADormonthy1rq: TStringField;
    DBNavigator1: TDBNavigator;
    Panel6: TPanel;
    Image3: TImage;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    DBEdit1: TDBEdit;
    Shape3: TShape;
    Label38: TLabel;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    ToolButton2: TToolButton;
    DBGrid1: TDBGrid;
    Panel10: TPanel;
    Label39: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Animate2: TAnimate;
    DateTimePicker5: TDateTimePicker;
    BitBtn1: TBitBtn;
    DateTimePicker6: TDateTimePicker;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    ADOQuery1: TADOQuery;
    procedure toolbutton(sender:tobject);
    function OpenPort(pclk: PClockInfo): Boolean;
    procedure ClosePort(pclk: PClockInfo);
    procedure ToolButton12Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure tbnfindClick(Sender: TObject);
    procedure DBGrid4TitleClick(Column: TColumn);
    procedure ComboBox6Change(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure DateTimePicker1Exit(Sender: TObject);
    procedure DateTimePicker2Exit(Sender: TObject);
    procedure Label28Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure ADorInitBeforeScroll(DataSet: TDataSet);
    procedure ToolButton2Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure tbnprintClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);

  private
    pclk: PClockInfo;
    clk:TClockInfo;
    CardInfo: TRealCardInfo;
    s:string;
    { Private declarations }

  public
    { Public declarations }
  end;

var
  formdoorset: Tformdoorset;
  MessageId: Integer;
  WProc: TFNWndProc;
  MIError: Integer;
  fIni: TIniFile;

implementation

uses main, datamol, canfind, publicfunction, pub, door_print;

{$R *.DFM}

procedure Tformdoorset.ToolButton12Click(Sender: TObject);
begin
  close;
end;
procedure Tformdoorset.FormClose(Sender: TObject;
  var Action: TCloseAction);
var i:integer;
begin
  timer1.Enabled:=false;
  closehandle(clk.hport);
  action:=cafree;
  formdoorset:=nil;
end;

procedure Tformdoorset.FormCreate(Sender: TObject);
var  i: Integer;
begin
  PageControl1.ActivePageIndex:=0;
  cbPort.Items.Clear;
  for i:=1 to 16 do
    cbPort.Items.Add(format('COM%d', [i]));
  cbPort.ItemIndex:=0;
  cbRate.ItemIndex:=0;
  PageControl1.ActivePageIndex:=0;
  clk.Port:=cbPort.ItemIndex+1;
  clk.baudrate:=StrToInt(cbRate.Text);
  clk.clock_id:=StrToInt('$'+edClockID.Text);
  with datamod do
   begin
     Adoquery1.Close;
     Adoquery1.SQL.Clear;
     Adoquery1.SQL.Add('select distinct dept from per24010 ');
     Adoquery1.Open;
     Combobox6.Items.Clear;
     while not Adoquery1.eof do
     begin
       combobox6.Items.Add(Adoquery1.fieldbyname('dept').asstring);
       Adoquery1.Next;
     end;
   end;
end;
procedure Tformdoorset.PageControl1Change(Sender: TObject);
var
  i, y: Integer;
  Mark: Char;
  S: string;
  R: Boolean;

begin
  case pagecontrol1.ActivePageIndex of
  0:
   begin
      Toolbutton(sender);
   end;
  1:
   begin
     toolbutton(sender);
     DBNavigator1.Enabled:=false;
     timer1.Enabled:=true;
   end;
  2:
  begin
    toolbutton(sender);
    Toolbutton2.Enabled:=true;
    ToolButton5.enabled:=true;
    tbnprint.enabled:=true;
    tbnfind.Enabled:=true;
    DBNavigator1.Enabled:=true;
    DBNavigator1.DataSource:=DDorInit;
    ADorInit.Close;
    ADorInit.Filtered:=false;
    ADorInit.CommandText:='select * from dor01 order by reReader,times,dept ';  //刷新打卡资料
    ADorInit.Open;
    if Adorinitphoto.asstring<>'' then
    begin
      image3.Picture.LoadFromFile(Adorinitphoto.asstring);
      label38.Visible:=false;
    end
    else
      label38.Visible:=false
  end;
  3:begin
      toolbutton(sender);
      DBNavigator1.Enabled:=true;
      toolbutton5.Enabled:=true;
      tbnprint.Enabled:=true;
      tbnfind.Enabled:=true;
      ToolButton6.Enabled:=true;

      DBNavigator1.DataSource:=DDorday;
      ADorday.Close;
      ADorday1.Close;
      ADorday.Filtered:=false;
      ADorday1.Filtered:=false;
      ADorday.CommandText:='select * from dor02 order by dept,rq';
      ADorday1.CommandText:='select * from dor01  where workno=:workno  and cardno=:cardno  and convert(varchar,times,111)=:rq  ';  //显示日明细
      ADorday.Open;
      ADorday1.Open;
   end;
  4:begin
      toolbutton(sender);
      DBNavigator1.Enabled:=true;
      toolbutton5.Enabled:=true;
      tbnprint.Enabled:=true;
      tbnfind.Enabled:=true;
      Toolbutton6.Enabled:=true;

      DBNavigator1.DataSource:=DDormonthy;
      ADormonthy.close;
      ADormonthy.commandtext:='select * from dor03 order by dept,monthy';   //显示月汇总
      ADormonthy.open;
      ADormonthy1.close;
      ADormonthy1.commandtext:='select * from dor02 where workno=:workno and cardno=:cardno and left(rq,7)=:monthy  ';
      ADormonthy1.open;
  end;
  end;
end;
procedure Tformdoorset.Button1Click(Sender: TObject);
var
  R: Boolean;
begin
  clk.Port:=cbPort.ItemIndex+1;
  clk.baudrate:=StrToInt(cbRate.Text);
  clk.clock_id:=StrToInt('$'+edClockID.Text);
  R:=OpenPort(@clk);
  button1.Enabled:=not R;
  button2.Enabled:=R;
end;

procedure Tformdoorset.Button2Click(Sender: TObject);
begin
  ClosePort(@clk);
  button1.Enabled:=True;
  button2.Enabled:=False;
end;
procedure Tformdoorset.Timer1Timer(Sender: TObject);
begin
  if RealReadCard(clk.hPort,clk.clock_id,@CardInfo) then
    begin
      if (not cardInfo.NoCard ) then
      begin
        with datamod do
        begin
          Adoquery1.close;
          Adoquery1.sql.clear;
          Adoquery1.sql.add('insert into dor01(cardno,times,reReader,mark,noid) ');
          Adoquery1.sql.add('select '''+cardinfo.CardNo+''','''+formatdatetime('yyyy/mm/dd hh:nn:ss ',now)+''','''+inttostr(cardinfo.Reader)+''','''+inttostr(cardinfo.mark)+''','''+IntToHex(StrToInt('$'+edClockID.Text), 2)+''' ');
          Adoquery1.sql.add('update dor01 set workno=a.workno,name=a.name,dept=a.dept,photo=a.photo,readok=1  from per24010 a where a.cardno='''+cardinfo.CardNo+''' and ( readok=0  or readok is null)');
          Adoquery1.sql.savetofile('c:\aaa.sql');
          msg.Caption:='正在读取数据'+ cardinfo.Cardno ;
          Adoquery1.execsql;   //保存数据
          if cardinfo.Reader=1 then
          begin
            Adoquery1.close;
            Adodataset1.Close;
            Adodataset1.CommandText:='select * from dor01 where  cardno='''+cardinfo.CardNo+''' and times=''' +formatdatetime('yyyy/mm/dd hh:nn:ss ',now)+''' and reReader=1  ';  //读头一
            Adodataset1.Open;
            if not Adodataset1.Eof then
            begin
              label19.Visible:=false;
              image1.Picture.LoadFromFile(Adodataset1photo.asstring);
              image1.Update;
            end;
          end
          else
          begin
            Adodataset2.Close;
            Adodataset2.CommandText:='select * from dor01 where  cardno='''+cardinfo.CardNo+''' and times=''' +formatdatetime('yyyy/mm/dd hh:nn:ss ',now)+''' and reReader=2  '; //读头二
            Adodataset2.Open;
            if not Adodataset2.Eof then
            begin
              label20.Visible:=false;
              image2.Picture.LoadFromFile(Adodataset2photo.asstring);
              image2.Update;
            end;

⌨️ 快捷键说明

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