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

📄 kqjl.pas

📁 考勤管理系统很有借鉴的饿意义
💻 PAS
字号:
unit Kqjl;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, Grids, DBGrids, ActnList, XPStyleActnCtrls,
  ActnMan, ComCtrls, KqglCommon, dmKqgl, DBCtrls, Mask, DBTables;

type
  TKqjlForm = class(TForm)
    dsYgxx: TDataSource;
    Splitter: TSplitter;
    pnlKqjl: TPanel;
    pnlKqrq: TPanel;
    lblKqrq: TLabel;
    dtpKqrq: TDateTimePicker;
    grpCq: TGroupBox;
    btSave: TButton;
    grpQt: TGroupBox;
    lblJb: TLabel;
    chkCQ: TCheckBox;
    chkCD: TCheckBox;
    chkZT: TCheckBox;
    edtJB: TEdit;
    chkKG: TCheckBox;
    chkXJ: TCheckBox;
    chkQJ: TCheckBox;
    chkCC: TCheckBox;
    btDel: TButton;
    dbYgxx: TDBGrid;
    procedure FormDestroy(Sender: TObject);
    procedure dsYgxxDataChange(Sender: TObject; Field: TField);
    procedure dtpKqrqChange(Sender: TObject);
    procedure btSaveClick(Sender: TObject);
    procedure btDelClick(Sender: TObject);
    procedure edtJBExit(Sender: TObject);
    procedure edtJBChange(Sender: TObject);
    procedure chkCQClick(Sender: TObject);
    procedure chkCDClick(Sender: TObject);
    procedure chkZTClick(Sender: TObject);
    procedure chkKGClick(Sender: TObject);
    procedure chkXJClick(Sender: TObject);
    procedure chkQJClick(Sender: TObject);
    procedure chkCCClick(Sender: TObject);
  private
    { Private declarations }
    FCurrBH: string;
    FModified: Boolean;
    FdmKqgl: TdmKqgl;
    procedure GetKqjl;
    procedure SetControls(ACQ, ACD, AZT, AKG, AXJ, AQJ, ACC: Boolean;
      AJbsj: Integer = 1);
  public
    { Public declarations }
    constructor Create(AOwner: TComponent; AdmKqgl: TdmKqgl); reintroduce;
  end;


implementation

{$R *.dfm}

procedure TKqjlForm.GetKqjl;
begin
  with FdmKqgl.qryKqjl do
  begin
    Sql.Text := 'Select * from Kqjl where Ygbh = ' + QuotedStr(FCurrBH) +
      ' and Kqrq = #' + DatetoStr(dtpKqrq.Date) + '#';
    Open;

    if Recordcount <> 0 then
    begin
      chkCQ.Checked := FieldByName('CQ').AsBoolean;
      chkCD.Checked := FieldByName('CD').AsBoolean; ;
      chkZT.Checked := FieldByName('ZT').AsBoolean; ;
      chkKG.Checked := FieldByName('KG').AsBoolean;;
      chkXJ.Checked := FieldByName('XJ').AsBoolean; ;
      chkQJ.Checked := FieldByName('QJ').AsBoolean;;
      chkCC.Checked := FieldByName('CC').AsBoolean;
      edtJB.Text := FieldByName('JBSJ').AsString;
      if edtJB.Text = '' then edtJB.Text := '0';
    end
    else begin
      chkCQ.Checked := False;
      chkCD.Checked := False;
      chkZT.Checked := False;
      chkKG.Checked := False;
      chkXJ.Checked := False;
      chkQJ.Checked := False;
      chkCC.Checked := False;
      edtJB.Text := '0';
    end;
    Close;
  end;
  FModified := False;
end;

procedure TKqjlForm.dsYgxxDataChange(Sender: TObject; Field: TField);
begin
  if FModified and
    (FCurrBH <> dsYgxx.DataSet.FieldByName('Ygbh').AsString) then
    btSave.Click;
  FCurrBH := dsYgxx.DataSet.FieldByName('Ygbh').AsString;
  GetKqjl;
end;

procedure TKqjlForm.dtpKqrqChange(Sender: TObject);
begin
  if FModified then
    btSave.Click;
  GetKqjl;
end;

procedure TKqjlForm.FormDestroy(Sender: TObject);
begin
  with FdmKqgl do
    if qryCommon.Active then qryCommon.Close;
end;

procedure TKqjlForm.btSaveClick(Sender: TObject);
begin
  if not FModified then exit;

  with FdmKqgl.qryKqjl do
  begin
    // 查数据库中有没有当前日期当前员工的考勤记录,如果没有则添加,如果有则更新。
    Close;
    Sql.Text := 'Select * from Kqjl where Ygbh = ' + QuotedStr(FCurrBH) +
      ' and Kqrq = #' + DatetoStr(dtpKqrq.Date) + '#';
    Open;
    if Recordcount = 0 then
    begin
      Close;
      sql.Text := 'Insert Into Kqjl (Ygbh, Kqrq, CQ, CD, ZT, KG, XJ, QJ, CC, JBSJ) ' +
        'Values ( ' + QuotedStr(FCurrBH) + ', #' + DatetoStr(dtpKqrq.Date) + '#, ' +
        BoolToStr(chkCQ.Checked) + ', ' + BoolToStr(chkCD.Checked) + ', ' +
        BoolToStr(chkZT.Checked) + ', ' + BoolToStr(chkKG.Checked) + ', ' +
        BoolToStr(chkXJ.Checked) + ', ' + BoolToStr(chkQJ.Checked) + ', ' +
        BoolToStr(chkCC.Checked) + ', ' + edtJB.Text + ' )';
      ExecSQL;
    end
    else if Recordcount = 1 then
    begin
      Close;
      sql.Text := 'Update Kqjl set CQ = ' + BoolToStr(chkCQ.Checked) + ', CD = ' +
        BoolToStr(chkCQ.Checked) + ', ZT = ' + BoolToStr(chkCQ.Checked) + ', KG = ' +
        BoolToStr(chkCQ.Checked) + ', XJ = ' + BoolToStr(chkCQ.Checked) + ', QJ = ' +
        BoolToStr(chkCQ.Checked) + ', CC = ' + BoolToStr(chkCQ.Checked) + ', JBSJ = ' +
        edtJB.Text + ' where Ygbh = ' + QuotedStr(FCurrBH) + ' and Kqrq = #' +
        DatetoStr(dtpKqrq.Date) + '#';
      ExecSQL;
    end;
    Close;
  end;

  FModified := False;
end;

procedure TKqjlForm.edtJBChange(Sender: TObject);
begin
 if strtoint(edtJb.Text) <> 0 then
    SetControls(True, True, True, False, False, False, False);
  FModified := True;
end;

procedure TKqjlForm.chkCQClick(Sender: TObject);
begin
  if chkCq.Checked then
    SetControls(True, True, True, False, False, False, False);
  FModified := True;
end;

procedure TKqjlForm.chkCDClick(Sender: TObject);
begin
  if chkCd.Checked then
    SetControls(True, True, True, False, False, False, False);
  FModified := True;
end;

procedure TKqjlForm.chkZTClick(Sender: TObject);
begin
  if chkZt.Checked then
    SetControls(True, True, True, False, False, False, False);
  FModified := True;
end;

procedure TKqjlForm.chkKGClick(Sender: TObject);
begin
  if chkKg.Checked then
    SetControls(False, False, False, True, False, False, False, 0);
  FModified := True;
end;

procedure TKqjlForm.chkXJClick(Sender: TObject);
begin
  if chkXj.Checked then
    SetControls(False, False, False, False, True, False, False, 0);
  FModified := True;
end;

procedure TKqjlForm.chkQJClick(Sender: TObject);
begin
  if chkQj.Checked then
    SetControls(False, False, False, False, False, True, False, 0);
  FModified := True;
end;

procedure TKqjlForm.chkCCClick(Sender: TObject);
begin
  if chkCc.Checked then
    SetControls(False, False, False, False, False, False, True, 0);
  FModified := True;
end;

procedure TKqjlForm.SetControls(ACQ, ACD, AZT, AKG, AXJ, AQJ, ACC: Boolean;
  AJbsj: integer = 1);
begin
  if not ACQ then chkCq.Checked := False;
  if not ACD then chkCd.Checked := False;
  if not AZT then chkZt.Checked := False;
  if not AKG then chkKg.Checked := False;
  if not AXJ then chkXJ.Checked := False;
  if not AQJ then chkQj.Checked := False;
  if not ACC then chkCc.Checked := False;
  if Ajbsj = 0 then edtJb.Text := '0';
end;

constructor TKqjlForm.Create(AOwner: TComponent; AdmKqgl: TdmKqgl);
begin
  FdmKqgl := AdmKqgl;
  FCurrBH := '';
  FModified := False;
  inherited Create(AOwner);

  with FdmKqgl do
  begin
    qryCommon.SQL.Text := 'Select * from Ygxx';
    qryCommon.Open;
    dsYgxx.DataSet := qryCommon;
  end;
end;

procedure TKqjlForm.btDelClick(Sender: TObject);
begin
  with FdmKqgl.qryKqjl do
  begin
    Close;
    sql.Text := 'Delete from Kqjl where Ygbh = ' + QuotedStr(FCurrBH) +
      ' and Kqrq = #' + DatetoStr(dtpKqrq.Date) + '#';
    ExecSQL;
    Close;
  end;
end;

procedure TKqjlForm.edtJBExit(Sender: TObject);
begin
  if Trim(edtJb.Text) = '' then
    edtJb.Text := '0'
end;

end.

⌨️ 快捷键说明

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