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

📄 u_emp.pas

📁 中控800型号考勤机的自动采集数据程序。能够手动采集
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit u_Emp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, ImgList, Menus,
  cxLookAndFeelPainters, cxButtons;

type
  TFrm_Emp = class(TForm)
    Panel1: TPanel;
    GroupBox2: TGroupBox;
    GroupBox1: TGroupBox;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    CEmpList: TListView;
    Panel5: TPanel;
    CDevList: TListView;
    Panel6: TPanel;
    ImageList: TImageList;
    cxButton1: TcxButton;
    cxButton2: TcxButton;
    cxButton3: TcxButton;
    cxButton4: TcxButton;
    cxButton5: TcxButton;
    cxButton6: TcxButton;
    cxButton7: TcxButton;
    cxButton8: TcxButton;
    cxButton9: TcxButton;
    cxButton10: TcxButton;
    cxButton11: TcxButton;
    cxButton12: TcxButton;
    procedure FormShow(Sender: TObject);
    procedure cxButton4Click(Sender: TObject);
    procedure cxButton1Click(Sender: TObject);
    procedure cxButton2Click(Sender: TObject);
    procedure cxButton8Click(Sender: TObject);
    procedure cxButton7Click(Sender: TObject);
    procedure cxButton5Click(Sender: TObject);
    procedure cxButton6Click(Sender: TObject);
    procedure cxButton12Click(Sender: TObject);
    procedure cxButton11Click(Sender: TObject);
    procedure cxButton9Click(Sender: TObject);
    procedure cxButton10Click(Sender: TObject);
  private
    CurDevID: integer;
    CurDevIP: string;
    CurDevPort: integer;
    CurDevPW: integer;
    CurSpec: string;
    aDevID: integer;
    { Private declarations }
    function GetMainFormCheckItem:integer;
    function UpdateUserInfoDBAndDev:boolean;
    //procedure SetDevUserInfo(aDevID:integer);
  public
    { Public declarations }
    procedure RefreshDevUserInfo;
    procedure RefreshDBUserInfo;
    property EDevID: integer read aDevID write aDevID;
  end;

var
  Frm_Emp: TFrm_Emp;

implementation

uses u_MainForm, u_dm, u_ChildLoadData, u_AddEMP, u_Info;

{$R *.dfm}
function TFrm_Emp.UpdateUserInfoDBAndDev:boolean;
var aErrorID: integer;
    dwMachineNumber: Integer;
    dwEnrollNumber: Integer;
    aName: WideString;
    aPassword: WideString;
    aPrivilege: Integer;
    aEnabled: WordBool;
    dwPassWord: integer;
    dwEnrollCardNumber: integer;
    CardNo: string;
    aMsg:string;
begin
 result := false;
 CurDevID := GetMainFormCheckItem;
 if CurDevID<=0 then
 begin
 application.MessageBox('请选择设备!','提示',MB_OK);
 exit;
 end;
 if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
 begin
  if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
   begin
    application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
    exit;
   end
  else
   begin
    with dm.temp do
    begin
     if Active then close;
     sql.Text :='if not Exists(select * from sysobjects where name=''TempEmp'')'
               +' Create table TempEmp ( '
               +' EmpID int, '
               +' EmpName nvarchar(50),'
               +' EmpCard nvarchar(10),'
               +' EmpIDM int,'
               +' EmpNameM nvarchar(50),'
               +' EmpCardM nvarchar(10))'
               +' else'
               +' Delete from TempEmp'
               +' Insert into TempEmp  select EmpID,EmpName,CardNo  from Employee ';
     Open;
    end;
    dwMachineNumber := CurDevID;
    if  frm_ChildLoadData.CZKEM1.ReadAllUserID(dwMachineNumber) then
    while frm_ChildLoadData.CZKEM1.GetAllUserInfo(dwMachineNumber,
     dwEnrollNumber,
     aName,
     aPassWord,
     aPrivilege,
     aEnabled) do
     begin
     end;  //end while
   end;//end 网络连接成功
 end;//end if 得到IP
end;
procedure TFrm_Emp.RefreshDBUserInfo;
begin
 CEmpList.Items.Clear;
 with dm.temp do
 begin
  if active then close;
  sql.Text := 'select EmpID,EmpName,CardNo from Employee';
  Open;
  while not eof do
  begin
   frm_info.RefreshInfo('正在刷新['+FieldByName('EmpName').AsString+']的信息');
   with CEmpList.Items.Add do
   begin
    Caption := FieldByName('EmpID').AsString ;
    Subitems.Add(FieldByName('EmpName').AsString);
    Subitems.Add(FieldByName('CardNo').AsString);
   end;
   Next;
  end;
  close;
  frm_info.CloseInfo;
 end;
end;
procedure TFrm_Emp.RefreshDevUserInfo;
var aErrorID: integer;
    dwMachineNumber: Integer;
    dwEnrollNumber: Integer;
    aName: WideString;
    aPassword: WideString;
    aPrivilege: Integer;
    aEnabled: WordBool;
    dwPassWord: integer;
    dwEnrollCardNumber: integer;
    CardNo: string;
    aMsg:string;
begin
 //CDevList.Items.Clear;
 CurDevID := GetMainFormCheckItem;
 if CurDevID<=0 then
 begin
 application.MessageBox('请选择设备!','提示',MB_OK);
 exit;
 end;
 if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
 begin
  if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
   begin
    application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
    exit;
   end
  else
   begin
    CDevList.Items.Clear;
    dwMachineNumber := CurDevID;
    aName := '';
    if  frm_ChildLoadData.CZKEM1.ReadAllUserID(dwMachineNumber) then

    while frm_ChildLoadData.CZKEM1.GetAllUserInfo(dwMachineNumber,
     dwEnrollNumber,
     aName,
     aPassWord,
     aPrivilege,
     aEnabled) do
     begin

     dwEnrollCardNumber := frm_ChildLoadData.CZKEM1.CardNumber[0];
     aMsg := '正在下载卡号为'+IntToStr(dwEnrollCardNumber)+'的信息';
     Frm_Info.RefreshInfo(aMsg);
     case Length(IntToStr(dwEnrollCardNumber)) of
      4: CardNo := '000000'+IntToStr(dwEnrollCardNumber);
      5: CardNo := '00000'+IntToStr(dwEnrollCardNumber);
      6: CardNo := '0000'+IntToStr(dwEnrollCardNumber);
      7: CardNo := '000'+IntToStr(dwEnrollCardNumber);
      8: CardNo := '00'+IntToStr(dwEnrollCardNumber);
      9: CardNo := '0'+IntToStr(dwEnrollCardNumber);
     end;
     with CDevList.Items.Add do
     begin
      Caption := '已上传';
      Subitems.Add(IntToStr(dwEnrollNumber));
      Subitems.Add(trim(aName));
      Subitems.Add(CardNo);
      imageindex := 0;
     end;
    end;
    Frm_Info.CloseInfo;
    application.MessageBox('下载完成!','提示',MB_OK);
   end;
 end;
end;

function TFrm_Emp.GetMainFormCheckItem:integer;
var i: integer;
begin
 Result := -1;
 for i:=0 to MainForm.DevList.Items.Count-1 do
 begin
  if MainForm.DevList.Items.Item[i].Checked then
   begin
   Result := StrToInt(MainForm.DevList.Items.Item[i].Caption);
   end;
 end;
end;

procedure TFrm_Emp.FormShow(Sender: TObject);
begin
  //刷新列表
  RefreshDBUserInfo;
end;

procedure TFrm_Emp.cxButton4Click(Sender: TObject);
var aEmpID,i: integer;
begin
try
//aEmpID := StrToInt(CEmpList.Selected.Caption);
if application.MessageBox('确定要从数据库删除所有选择的员工记录?','提示',MB_ICONQuestion+MB_YESNO)=IDYES then
begin
 for i:=CEmpList.Items.Count-1 downto 0 do
 begin
 if CempList.Items.Item[i].Checked then
 begin
 aEmpID := StrToInt(CempList.Items.Item[i].Caption);
 with dm.temp do
 begin
  if active then close ;
  sql.Text := 'delete from employee where empid='+IntToStr(aEmpID);
  ExecSql;
  CempList.Items.Delete(i);
  frm_info.RefreshInfo('删除卡号为:'+IntToStr(aEmpID)+'的员工信息成功');
 end;
 end;  //end if
 end; //end for
 frm_info.CloseInfo;
 application.MessageBox('删除成功!','提示',MB_OK);
 end;//end ifyes
 except
  application.MessageBox('删除失败!','提示',MB_OK);
 end;
end;


procedure TFrm_Emp.cxButton1Click(Sender: TObject);
begin
 if Frm_AddEmp=nil then
 begin
  Frm_AddEmp := TFrm_AddEmp.Create(application);
 end;
  Frm_AddEmp.EditType := 'Insert';
  Frm_AddEmp.ShowModal;
  if Frm_AddEmp.ModalResult=Mrok then
  begin
  //刷新列表
  RefreshDBUserInfo;
  end;
end;

procedure TFrm_Emp.cxButton2Click(Sender: TObject);
var aEmpID: integer;
    aEmpName: string;
    aCardNo : string;
    i:integer;
    ifCheck: boolean;
begin
 try
 ifCheck := false;
 for i:=0 to CEmpList.Items.Count-1 do
 begin
  if CEmpList.Items.Item[i].Checked then
  begin
   aEmpID := StrToInt(CEmpList.Items.Item[i].Caption);
   aEmpName := CEmpList.Items.Item[i].SubItems[0];
   aCardNo := CEmpList.Items.Item[i].SubItems[1];
   ifCheck := true;
   break;
  end;
 end;
 if not ifCheck then
 begin
  application.MessageBox('请钩选一个员工!','提示',MB_OK);
  exit;
 end;
 if Frm_AddEmp=nil then
 begin
  Frm_AddEmp := TFrm_AddEmp.Create(application);
 end;
  Frm_AddEmp.EditType := 'Edit';
  Frm_AddEmp.EmpID := aEmpID;
  Frm_AddEmp.EmpName := aEmpName;
  Frm_AddEmp.EmpCard := aCardNo;
  Frm_AddEmp.ShowModal;
  if Frm_AddEmp.ModalResult=Mrok then
  begin
  //刷新列表
  RefreshDBUserInfo;
  end;
 except
  application.MessageBox('请选择员工!','提示',MB_OK);
 end;
end;

procedure TFrm_Emp.cxButton8Click(Sender: TObject);
var aEmpID:integer;
    aErrorID: integer;
    dwMachineNumber: Integer;
    dwEnrollNumber: Integer;
    aName: WideString;
    aPassword: WideString;
    aPrivilege: Integer;
    aEnabled: WordBool;
    dwPassWord: integer;
    dwEnrollCardNumber: integer;
    CardNo: integer;
    i: integer;
    aMsg:string;
begin
 CurDevID := GetMainFormCheckItem;
 if CurDevID<=0 then
 begin
 application.MessageBox('请选择设备!','提示',MB_OK);
 exit;
 end;
 if dm.GetDeviceInfo(CurDevID,CurDevIP,CurDevPort,CurDevPW,CurSpec) then
 begin
  if not frm_ChildLoadData.DeviceConnected(2,CurDevID,0,CurDevIP,CurDevPort,CurDevPW,0,aErrorID) then
   begin
    application.MessageBox('连接设备失败!请检查网络!','提示',MB_OK);
    exit;
   end
  else
   begin
     for i:=0 to CDevList.Items.Count-1 do
     begin
      if tryStrToInt(CDevList.Items.Item[i].SubItems[2],CardNo) then
      frm_ChildLoadData.CZKEM1.CardNumber[0] := CardNo
      else
      begin
      frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'失败');
      CDevList.Items.Item[i].Caption := '上传失败';
      CDevList.Items.Item[i].ImageIndex := 1;
      continue;                                 
      end;
      dwEnrollNumber := StrToInt(CDevList.Items.Item[i].SubItems[0]);
      aName := trim(CDevList.Items.Item[i].SubItems[1]);
      aPassword:='0';
      aPrivilege:=0;
      aEnabled := True;
      aMsg:='正在上传卡号为:'+CDevList.Items.Item[i].SubItems[2]+'的员工信息';
      frm_info.RefreshInfo(aMsg);
      if frm_ChildLoadData.CZKEM1.SetUserInfo(dwMachineNumber,dwEnrollNumber,aName,aPassword,aPrivilege,aEnabled) then
      begin
      frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'成功');
      CDevList.Items.Item[i].Caption := '已上传';
      CDevList.Items.Item[i].ImageIndex := 0;
      end
      else
      begin
      frm_info.RefreshInfo('上传:'+CDevList.Items.Item[i].SubItems[2]+'失败');
      CDevList.Items.Item[i].Caption := '上传失败';
      CDevList.Items.Item[i].ImageIndex := 1;

⌨️ 快捷键说明

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