frm_k_jbdjpas.pas

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

PAS
391
字号
unit Frm_K_JbdjPas;

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_Jbdj = class(TMyModalForm1)
    TV: TTreeView;
    DBGrid1: TDBGrid;
    searchbox: TPanel;
    Panel5: TPanel;
    Label13: TLabel;
    Label14: TLabel;
    chk1: TCheckBox;
    fyhbh: TEdit;
    GroupBox3: TGroupBox;
    Label15: TLabel;
    dtp1: TDateTimePicker;
    dtp2: TDateTimePicker;
    GroupBox2: TGroupBox;
    Label16: TLabel;
    chk5: TCheckBox;
    dtp3: TDateTimePicker;
    dtp4: TDateTimePicker;
    chk4: TCheckBox;
    chk2: TCheckBox;
    fyhxm: TEdit;
    cmd: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label11: TLabel;
    Label10: TLabel;
    Label12: TLabel;
    yhbh: TEdit;
    ksrq: TDateTimePicker;
    kssj: TDateTimePicker;
    Edit1: TEdit;
    jsrq: TDateTimePicker;
    jssj: TDateTimePicker;
    Rg1: TRadioButton;
    Rg2: TRadioButton;
    bmmc: TEdit;
    D5_jbjl: TDataSource;
    Dyhxx: TDataSource;
    BtnOk: TChangeImg;
    LBtnOk: TLabelB;
    BtnExit: TChangeImg;
    LBtnExit: TLabelB;
    qryjbjl: TADOQuery;
    Qyhxx: TADOQuery;
    pkq_A_jbjl: TADOStoredProc;
    qryjbjlyhbh: TStringField;
    qryjbjljbksrq: TStringField;
    qryjbjljbkssj: TStringField;
    qryjbjljbjzrq: TStringField;
    qryjbjljbjzsj: TStringField;
    qryjbjljbyy: TStringField;
    qryjbjlyhxm: TStringField;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn1: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure yhbhKeyPress(Sender: TObject; var Key: Char);
    procedure BtnOkClick(Sender: TObject);
    procedure BtnExitClick(Sender: TObject);
    procedure ChangeImg1Click(Sender: TObject);
    procedure TVClick(Sender: TObject);
    procedure ksrqKeyPress(Sender: TObject; var Key: Char);
    procedure kssjKeyPress(Sender: TObject; var Key: Char);
    procedure jssjKeyPress(Sender: TObject; var Key: Char);
    procedure jsrqKeyPress(Sender: TObject; var Key: Char);
    procedure yhbhEnter(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_K_Jbdj: TFrm_K_Jbdj;

implementation

uses DM_DataModal, UGlobal;

{$R *.dfm}

procedure TFrm_K_Jbdj.FormCreate(Sender: TObject);
begin
  inherited;
  gtKqgl.LoadOrganTree(WindData.AdoConn, TV, 4);
  ksrq.date := date;
  jsrq.date := date;
  dtp1.date := date;
  dtp2.date := date;
  dtp3.date := date;
  dtp4.date := date;
  kssj.Time := time;
  jssj.Time := time;
end;

procedure TFrm_K_Jbdj.yhbhKeyPress(Sender: TObject; var Key: Char);
var
  sqltxt: string;
  retmsg: string;
  arr: array[0..0] of string[50];
begin
  inherited;
  if key = #13 then
  begin
    if (yhbh.text = '') then exit;
    if gtKqgl.ExistsUser(trim(yhbh.text), retmsg) <> 0 then
    begin
      application.MessageBox(PChar(retmsg), '信息提示', mb_ok + mb_IconInformation);
      yhbh.SetFocus;
      exit;
    end
    else
      ksrq.Setfocus;
  end;
end;

procedure TFrm_K_Jbdj.BtnOkClick(Sender: TObject);
var
  filterStr: string;
begin
  inherited;
  filterStr := 'select * from vkq_jbjl where 2>1';
  if chk1.Checked then
    filterStr := filterStr + ' and yhbh=''' + fyhbh.Text + '''';
  if chk2.Checked then
    filterStr := filterStr + ' and yhxm=''' + fyhxm.Text + '''';
  if chk4.Checked then
  begin
    if dtp1.DateTime > dtp2.DateTime then
    begin
      application.MessageBox('时间顺序设置出错,请重设!', '信息提示', mb_YesNo + mb_iconInformation);
      dtp1.SetFocus;
      exit;
    end;
    filterStr := filterStr + ' and jbksrq>=''' + datetostr(dtp1.date) + '''';
    filterStr := filterStr + ' and jbksrq<=''' + datetostr(dtp2.date) + '''';
  end;
  if chk5.Checked then
  begin
    if dtp3.DateTime > dtp4.DateTime then
    begin
      application.MessageBox('时间顺序设置出错,请重设!', '信息提示', mb_ok + mb_iconInformation);
      dtp3.SetFocus;
      exit;
    end;
    filterStr := filterStr + ' and jbjzrq>=''' + datetostr(dtp3.date) + '''';
    filterStr := filterStr + ' and jbjzrq<=''' + datetostr(dtp4.date) + '''';
  end;
  with qryjbjl 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;
  cmd.Enabled := true;

end;

procedure TFrm_K_Jbdj.BtnExitClick(Sender: TObject);
begin
  inherited;
  SearchBox.Visible := false;
  Cmd.Enabled := true;
end;

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

procedure TFrm_K_Jbdj.TVClick(Sender: TObject);
begin
  inherited;
  rg1.Checked := true;
  try
    if tv.Selected.Level = 1 then bmmc.text := TV.Selected.Text;
    rg1.checked := true;
  except
  end;
end;

procedure TFrm_K_Jbdj.ksrqKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then kssj.Setfocus;
end;

procedure TFrm_K_Jbdj.kssjKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then jsrq.Setfocus;
end;

procedure TFrm_K_Jbdj.jssjKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then Edit1.Setfocus;
end;

procedure TFrm_K_Jbdj.jsrqKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then jssj.Setfocus;
end;

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

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

procedure TFrm_K_Jbdj.BitBtn1Click(Sender: TObject);
var
  retmsg: string;
  sqltxt: string;
  arr: array[0..1] of string[50];
  cs, csz: string; //a为机构,b为分机构,c为部门,d为个人考勤
  NodeValue, mesg: string; //节点关联的数值
  cxbmtjoskeyvalue:string;//查询部门条件值
begin
  inherited;
// 个人加班处理
  if Rg2.Checked then
  begin
    if yhbh.text = '' then
    begin
      application.MessageBox('请输入用户!', '信息提示', mb_ok + mb_IconInformation);
      yhbh.setfocus;
      exit;
    end;
    if gtKqgl.ExistsUser(trim(yhbh.text), retmsg) <> 0 then
    begin
      application.MessageBox(PChar(retmsg), '信息提示', mb_ok + mb_IconInformation);
      yhbh.SetFocus;
      exit;
    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);
    cs:='d';
    mesg := '请确认您选的部门:';
    cxbmtjoskeyvalue:=TV.Selected.text;
    if application.MessageBox(pchar(mesg + TV.Selected.text),
      '信息提示', mb_YesNo + mb_IconQuestion) = IdNo then exit;
  end;
  if ksrq.Date > jsrq.Date then
  begin
    application.MessageBox('开始日期不能大于结束日期!', '信息提示', mb_ok + mb_IconInformation);
    ksrq.SetFocus;
    exit;
  end;
 //
   if gtKqgl.cxbmtjoskey(cs,cxbmtjoskeyvalue, retmsg) <> 0 then
   begin
      application.MessageBox(PChar('您无权帮'+retmsg+'用户加班登记'), '信息提示', mb_ok + mb_IconInformation);
      exit;
   end;
  with pkq_A_jbjl do
  begin
    close;
    Parameters.ParamByName('@cs').Value := cs;
    Parameters.ParamByName('@csz').Value := csz;
    Parameters.ParamByName('@ksrq').Value := datetostr(ksrq.date);
    if length(timetostr(kssj.Time)) < 8 then
      Parameters.ParamByName('@kssj').Value := '0' + timetostr(kssj.time)
    else
      Parameters.ParamByName('@kssj').Value := timetostr(kssj.time);
    Parameters.ParamByName('@jsrq').Value := datetostr(jsrq.date);
    if length(timetostr(jssj.Time)) < 8 then
      Parameters.ParamByName('@jssj').Value := '0' + timetostr(jssj.time)
    else
      Parameters.ParamByName('@jssj').Value := timetostr(jssj.time);
    Parameters.ParamByName('@jbyy').Value := trim(edit1.text);
    try
      execproc;
    except
      application.MessageBox('执行存储过程pkq_A_jbjl出错!', '信息提示', mb_ok + mb_IconInformation);
    end;
    with qryjbjl do
    begin
      sql.Clear;
      sql.Add('select * from vkq_jbjl where yhbh=''' + csz+''''
               + ' and jbksrq='''+datetostr(ksrq.date)+''''
               + ' and jbjzrq='''+datetostr(jsrq.Date)+'''');
      open;
    end;
  end;
  yhbh.Clear;
end;

procedure TFrm_K_Jbdj.BitBtn3Click(Sender: TObject);
var
  sSql: string;
  retmsg:string;
begin
  inherited;
  with qryjbjl do
  begin
    if not eof then
    begin
      if gtKqgl.cxbmtjoskey('e',fieldbyname('yhbh').asstring, retmsg) <> 0 then
      begin
         application.MessageBox(PChar('您无权删除'+retmsg+'用户加班记录'), '信息提示', mb_ok + mb_IconInformation);
         exit;
      end;
      ssql := '是否删除此加班记录:' + #13 + '  用户编号:' + fieldbyname('yhbh').asstring;
      ssql := ssql + #13 + '    用户姓名:' + fieldbyname('yhxm').asstring;
      ssql := ssql + #13 + '   开始日期:' + fieldbyname('jbksrq').asstring + '          ';
      ssql := ssql + #13 + '   结束日期:' + fieldbyname('jbjzrq').asstring;
      if (application.MessageBox(pchar(ssql), '系统提示', mb_okcancel + mb_iconwarning) = id_ok) then
      begin
        with pkq_A_jbjl do
        begin
          close;
          Parameters.ParamByName('@cs').Value := 'z';
          Parameters.ParamByName('@csz').Value := qryjbjl.fieldbyname('yhbh').asstring;
          Parameters.ParamByName('@ksrq').Value := qryjbjl.fieldbyname('jbksrq').asstring;
          Parameters.ParamByName('@jsrq').Value := qryjbjl.fieldbyname('jbjzrq').asstring;
          try
            execproc;
          except
            application.MessageBox('执行存储过程pkq_A_jbjl出错!', '信息提示', mb_ok + mb_iconInformation);
          end;
          qryjbjl.close;
          qryjbjl.open;
        end;
      end
      else
        exit;
    end
    else
      application.MessageBox('当前无可删除记录', '系统提示', mb_ok + mb_iconwarning);
  end;
end;


procedure TFrm_K_Jbdj.BitBtn2Click(Sender: TObject);
begin
  inherited;
   cmd.Enabled := false;
  SearchBox.Visible := true;
end;

end.

⌨️ 快捷键说明

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