frm_k_sgqdpas.pas

来自「是一个用delphi设计的考勤系统」· PAS 代码 · 共 391 行

PAS
391
字号
unit Frm_K_SgqdPas;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ModalForm, Menus, StdCtrls, ExtCtrls, DB, DBTables, ComCtrls,
  Buttons, Grids, DBGrids, YLabelButton, ChangeImage, ADODB, ImgList,
  UErrDisplay, ModalForm1;

type
  TFrm_K_Sgqd = class(TMyModalForm1)
    TV: TTreeView;
    DBGrid1: TDBGrid;
    cmd: TPanel;
    BcLv: TListView;
    searchbox: TPanel;
    Panel5: TPanel;
    Label9: TLabel;
    Label10: TLabel;
    chk1: TCheckBox;
    Edit1: TEdit;
    GroupBox3: TGroupBox;
    Label6: TLabel;
    dtp1: TDateTimePicker;
    dtp2: TDateTimePicker;
    chk3: TCheckBox;
    chk2: TCheckBox;
    yhxm: TEdit;
    Dkqjl: TDataSource;
    Dyhxx: TDataSource;
    BtnOk: TChangeImg;
    LBtnOk: TLabelB;
    BtnExit: TChangeImg;
    LBtnExit: TLabelB;
    Qyhxx: TADOQuery;
    Qrysgqd: TADOQuery;
    pkq_A_Sgqd: TADOStoredProc;
    Rg2: TRadioButton;
    yhbh: TEdit;
    bmmc: TEdit;
    Rg1: TRadioButton;
    Label7: TLabel;
    Label8: TLabel;
    Label3: TLabel;
    kqrq: TDateTimePicker;
    cmbqdlb: TComboBox;
    dtpjsrq: TDateTimePicker;
    yhxm2: TEdit;
    rg3: TRadioButton;
    BitBtn1: TBitBtn;
    BitBtn3: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BtnOkClick(Sender: TObject);
    procedure BtnExitClick(Sender: TObject);
    procedure chk1Click(Sender: TObject);
    procedure ChangeImg1Click(Sender: TObject);
    procedure ChangeImg2Click(Sender: TObject);
    procedure TVClick(Sender: TObject);
    procedure yhbhEnter(Sender: TObject);
    procedure BcLvColumnClick(Sender: TObject; Column: TListColumn);
    procedure bmmcEnter(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_K_Sgqd: TFrm_K_Sgqd;
  nodevalue: string; //树节点的数值
implementation

uses DM_DataModal, UGlobal,  Frm_S_UsrConfigPas,
  frmExamPassWordPas;

{$R *.dfm}

procedure TFrm_K_Sgqd.FormCreate(Sender: TObject);
begin
  inherited;
  gtKqgl.LoadOrganTree(Winddata.AdoConn, TV, 4); //初始化用户信息
  gtKqgl.IniBcListView(bcLv); //初始化班次
  dtp1.date := date;
  dtp2.date := date;
  kqrq.date := date;
  dtpjsrq.date := date;
end;

procedure TFrm_K_Sgqd.BtnOkClick(Sender: TObject);
var
  filterStr: string;
begin
  inherited;
  filterStr := 'select * from vkq_kqjlcur where sgdk=''s''';
  if chk1.Checked then
    filterStr := filterStr + ' and yhbh=''' + edit1.Text + '''';
  if chk2.Checked then
    filterStr := filterStr + ' and yhxm=''' + yhxm.Text + '''';
  if (chk3.checked) then
  begin
    if dtp1.date > dtp2.date then
    begin
      application.MessageBox('时间顺序不对,请重设!', '信息提示', mb_ok + mb_IconInformation);
      exit;
    end;
    filterStr := filterStr + ' and jlrq>=''' + datetostr(dtp1.date) + '''';
    filterStr := filterStr + ' and jlrq<=''' + datetostr(dtp2.date) + '''';
  end;
  with Qrysgqd do
  begin
    SQL.Clear;
    SQL.Add(filterStr);
    OPEN;
    if Recordcount <= 0 then
    begin
      application.MessageBox('没有此类记录!', '信息提示', mb_ok + mb_IconInformation);
      exit;
    end;
  end;
  SearchBox.visible := false;
end;

procedure TFrm_K_Sgqd.BtnExitClick(Sender: TObject);
begin
  inherited;
  SearchBox.visible := false;
end;

procedure TFrm_K_Sgqd.chk1Click(Sender: TObject);
begin
  inherited;
  if chk1.Checked then Edit1.SetFocus;
end;

procedure TFrm_K_Sgqd.ChangeImg1Click(Sender: TObject);
begin
  inherited;
  with Qyhxx do
  begin
    if Recordcount = 0 then exit;
    yhbh.text := fieldbyname('yhbh').asstring;
  end;
end;

procedure TFrm_K_Sgqd.ChangeImg2Click(Sender: TObject);
begin
  inherited;
  Rg1.Checked := True;
end;

procedure TFrm_K_Sgqd.TVClick(Sender: TObject);
begin
  inherited;

  try
    if tv.Selected.Level = 1 then
    begin
      bmmc.text := TV.Selected.Text;
      rg1.checked := true;
    end;
    {
    if tv.Selected.Level = 2 then
    begin
      yhxm2.text := TV.Selected.Text; 
      rg3.checked := true;
    end;
    }
  except
  end;
  {
   NodeValue := ptTreeNode(TV.Selected.data)^.nodeValue;
  if (copy(NodeValue, 1, 1) = 'd') then gtKqgl.LoadUserTree(TV,copy(NodeValue, 2, Length(NodeValue)-1));
 }
end;

procedure TFrm_K_Sgqd.yhbhEnter(Sender: TObject);
begin
  inherited;
  rg2.Checked := true;
end;

procedure TFrm_K_Sgqd.BcLvColumnClick(Sender: TObject;
  Column: TListColumn);
var
  iCount: integer;
begin
  inherited;
  if Column.ID = 0 then
  begin
    for iCount := 0 to BcLv.Items.count - 1 do
      BcLv.items[iCount].Checked := not (BcLv.items[iCount].Checked);
  end;
end;

procedure TFrm_K_Sgqd.bmmcEnter(Sender: TObject);
begin
  inherited;
  rg1.Checked := true;
end;

procedure TFrm_K_Sgqd.N5Click(Sender: TObject);
begin
  Sender := yhbh;
  inherited;
end;

procedure TFrm_K_Sgqd.BitBtn1Click(Sender: TObject);
var
  cs, csz, sqltxt, mesg, NodeValue, AdminPwd: string; //节点关联的数值
  iBccount: integer;
  qry: TADOQuery;
  ksrq: Tdatetime;
  jsrq: Tdatetime;
  RetVal: Integer;
  RetMsg,cxbmtjoskeyvalue: string;
  yhbh_temp:string;   //姓名查询时取出用户编号
begin 
  inherited;
  qry := TADOQuery.Create(self);
  ksrq := kqrq.date;
  jsrq := dtpjsrq.date;
  try
    with qry do
    begin
      Connection := WindData.AdoConn;
      sql.Clear;
      sql.Add('select distinct n,y from kq_bcsd' + ' where n=''' + copy(datetostr(kqrq.date), 1, 4)
        + ''' and y=''' + copy(datetostr(kqrq.date), 6, 2) + '''');
      open;
      if eof then
      begin
        application.MessageBox('此月的班次未设置或已经月结,不能进行手工签到!', '系统提示', mb_ok + mb_iconwarning);
        exit;
      end;
    end;
  finally
    qry.free;
  end;
// 个人考勤
  if cmbqdlb.Text = '' then
  begin
    application.MessageBox('请选择签到类别!', '信息提示', mb_ok + mb_IconInformation);
    exit
  end;
  //**************操作员身份认证*************
  frmExamPassWord := TfrmExamPassWord.Create(application);
  if frmExamPassWord.ShowModal =2 then
  begin
   frmExamPassWord.Free;
   exit;
  end
  else
  frmExamPassWord.Free;

 //************用户姓名*****************************
  if Rg3.Checked then
  begin
    if yhxm2.text = '' then
    begin
      application.MessageBox('请输入用户姓名!', '信息提示', mb_ok + mb_IconInformation);
      yhxm2.setfocus;
      exit;
    end;
    with qyhxx do
    begin
      sql.Clear;
      sqltxt := 'select yhbh,yhxm from zx_s_yhxx where yhxm=''' + trim(yhxm2.text) + '''';
      sql.Add(sqltxt);
      open;
      if eof then
      begin
        application.MessageBox('该用户未发卡,请重输!', '信息提示', mb_ok + mb_IconInformation);
        exit;
      end
      else
      begin
       if  qyhxx.RecordCount>2 then
       begin
        application.MessageBox(pchar('有多人叫'+trim(yhxm2.text)+'用户,无法用姓名签到,请用编号签到'), '信息提示', mb_ok + mb_IconInformation);
        exit;
       end;
      yhbh_temp:=qyhxx.fieldbyname('yhbh').asstring;
    end;
  end;
    cs := 'e';
    csz := trim(yhbh_temp);
    cxbmtjoskeyvalue:=trim(yhbh_temp);
  end;     

  //*****************************************   用户编号
  if Rg2.Checked then
  begin
    if yhbh.text = '' then
    begin
      application.MessageBox('请输入用户编号!', '信息提示', mb_ok + mb_IconInformation);
      yhbh.setfocus;
      exit;
    end;
    with qyhxx do
    begin
      sql.Clear;
      sqltxt := 'select yhbh,yhxm from zx_s_yhxx where yhbh=''' + trim(yhbh.text) + '''';
      sql.Add(sqltxt);
      open;
      if eof then
      begin
        application.MessageBox('该用户未发卡,请重输!', '信息提示', mb_ok + mb_IconInformation);
        exit;
      end;
    end;
    cs := 'e';
    csz := trim(yhbh.text);
    cxbmtjoskeyvalue:=trim(yhbh.text);
  end;

//集体考勤
  if Rg1.checked then
  begin
    try
      NodeValue := ptTreeNode(TV.Selected.data)^.nodeValue;
    except
      application.MessageBox('请选择部门!', '信息提示', mb_ok + mb_IconInformation);
      exit;
    end;
    cs := copy(NodeValue, 1, 1);
    csz := copy(NodeValue, 2, length(NodeValue) - 1);
    cxbmtjoskeyvalue:=TV.Selected.text;
    mesg := '请确认所选的部门:';
    if application.MessageBox(pchar(mesg + TV.Selected.text),
      '信息提示', mb_YesNo + mb_IconQuestion) = IdNo then exit;
  end;
 //  
   if gtKqgl.cxbmtjoskey(cs,cxbmtjoskeyvalue, retmsg) <> 0 then
   begin
      application.MessageBox(PChar('您无权帮'+retmsg+'用户签到'), '信息提示', mb_ok + mb_IconInformation);
      exit;
   end;

  while ksrq <= jsrq do
  begin
    for iBcCount := 0 to BcLv.Items.count - 1 do
    begin
      if bclv.Items[iBcCount].Checked then
        with pkq_A_Sgqd do
        begin
          close;
          Parameters.ParamByName('@cs').Value := cs;
          Parameters.ParamByName('@csz').Value := csz;
          Parameters.ParamByName('@kqrq').Value := datetostr(ksrq);
          if copy(cmbqdlb.text, 1, 1) = 'Y' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[2]
          else if copy(cmbqdlb.text, 1, 1) = 'C' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[4]
          else if copy(cmbqdlb.text, 1, 1) = 'Z' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[1]
          else if copy(cmbqdlb.text, 1, 1) = 'O' then Parameters.ParamByName('@kqsj').Value := timetostr(strtotime(bclv.Items[iBcCount].SubItems[4]) + 0.001);
          Parameters.ParamByName('@qdlb').Value := copy(cmbqdlb.Text, 1, 1);
          Parameters.ParamByName('@bc').Value := strtoint(bclv.Items[ibccount].caption);
          try
            execproc;
          except
            RetMsg := Parameters.ParamByName('@retmsg').Value;
            application.MessageBox(PChar(RetMsg), '信息提示', mb_ok + mb_IconInformation);
            exit;
          end;
        end;
    end;
    ksrq := ksrq + 1;
  end;
  with Qrysgqd do
  begin
    close;
    sql.Clear;
    sql.Add('select yhbh,yhxm,jlrq,jlsj,sgdk bmbh,bmmc from vkq_kqjlcur where yhbh=''' + trim(yhbh.text) + '''' +
      ' and jlrq>=''' + datetostr(kqrq.date) + ''' and jlrq<=''' + datetostr(dtpjsrq.date) + '''');
    open;
  end;
  application.MessageBox('签到完毕!', '信息提示', mb_ok + mb_IconInformation);
  yhbh.Clear;
end;

procedure TFrm_K_Sgqd.BitBtn3Click(Sender: TObject);
begin
  inherited;
  searchBox.visible := true;
end;

end.

⌨️ 快捷键说明

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