changetime.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 257 行

PAS
257
字号
unit changetime;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, DBCtrls, Mask, ExtCtrls, ImgList, ToolWin, Db, ADODB;

type
  Tformchangetime = class(TForm)
    Panel1: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Label5: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    DBEdit8: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    DBCheckBox3: TDBCheckBox;
    DBEdit7: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBCheckBox4: TDBCheckBox;
    DBCheckBox5: TDBCheckBox;
    DBCheckBox6: TDBCheckBox;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    DBEdit15: TDBEdit;
    DBEdit16: TDBEdit;
    DBCheckBox7: TDBCheckBox;
    DBCheckBox8: TDBCheckBox;
    DBCheckBox9: TDBCheckBox;
    DBEdit17: TDBEdit;
    DBEdit18: TDBEdit;
    DBEdit19: TDBEdit;
    DBEdit20: TDBEdit;
    DBCheckBox10: TDBCheckBox;
    DBCheckBox11: TDBCheckBox;
    DBCheckBox12: TDBCheckBox;
    DBEdit21: TDBEdit;
    DBEdit22: TDBEdit;
    DBEdit23: TDBEdit;
    DBEdit24: TDBEdit;
    DBCheckBox13: TDBCheckBox;
    DBCheckBox14: TDBCheckBox;
    DBCheckBox15: TDBCheckBox;
    ToolBar1: TToolBar;
    ToolButton7: TToolButton;
    DBNavigator1: TDBNavigator;
    ImageList1: TImageList;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    DBEdit2: TDBEdit;
    DBEdit1: TDBEdit;
    DBComboBox1: TDBComboBox;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit25: TDBEdit;
    DBEdit26: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit5: TDBEdit;
    DBMemo1: TDBMemo;
    aqy1: TADOQuery;
    DBRadioGroup1: TDBRadioGroup;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton7Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DateTimePicker3CloseUp(Sender: TObject);
    procedure DateTimePicker4CloseUp(Sender: TObject);
    procedure DBEdit1Exit(Sender: TObject);
    procedure DBEdit2Exit(Sender: TObject);
    procedure DBComboBox1Exit(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBComboBox1Enter(Sender: TObject);
    procedure DBComboBox1Change(Sender: TObject);
  private
    { Private declarations }
    Fieldsum:integer;   //共有几个字段
  public
    { Public declarations }
  end;

var
  formchangetime: Tformchangetime;

implementation

uses datamol,publicfunction, main,cvcode;
{$R *.DFM}

procedure Tformchangetime.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    begin
      key:=#0;
      selectnext(activecontrol,true,true);
    end;
end;


procedure Tformchangetime.ToolButton7Click(Sender: TObject);
begin
  datamod.adochangesche.cancel;
  close;
end;

procedure Tformchangetime.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  datamod.adochangesche.cancel;
end;

procedure Tformchangetime.DateTimePicker3CloseUp(Sender: TObject);
begin
  datamod.ADOchangesche.FieldByName('startrq').asstring :=datetostr(datetimepicker3.date);
  dbedit1.setfocus;
end;

procedure Tformchangetime.DateTimePicker4CloseUp(Sender: TObject);
begin
  datamod.ADOchangesche.FieldByName('endrq').asstring :=datetostr(datetimepicker4.date);
  dbedit2.setfocus;
end;

procedure Tformchangetime.DBEdit1Exit(Sender: TObject);
begin
  if not datamod.ADOchangesche.Fieldbyname('startrq').isnull then
   if not isdate(Dbedit1.text) then
    begin
      Application.messagebox('您必须输入一个正确的日期,否则您的作业将产生一想不到的结果','Warning',mb_ok+mb_iconwarning);
      dbedit1.SetFocus;
      exit;
    end;
end;

procedure Tformchangetime.DBEdit2Exit(Sender: TObject);
begin
  if not datamod.ADOchangesche.Fieldbyname('endrq').isnull then
  begin
    if not isdate(dbedit2.text) then
     begin
       Application.messagebox('您必须输入一个正确的日期,否则您的作业将产生一想不到的结果','Warning',mb_ok+mb_iconwarning);
       dbedit2.SetFocus;
       exit;
     end;
    if dbedit2.text<dbedit1.text then
     begin
      showmessage('后面的日期不能小于前面的日期');
      exit;
     end;
   end;
end;

procedure Tformchangetime.DBComboBox1Exit(Sender: TObject);
var i:integer;
begin
  if dbcombobox1.Items.IndexOf(dbcombobox1.Text)=-1 then
    begin
      Application.messagebox('对不起,在该日期范围内,此班次编号不是有效编号','Warning',mb_ok+mb_iconwarning);
    end
  else
  begin
     aqy1.Close;
     aqy1.SQL.Clear;     //1,10号,8号是开始日期,应该选1号的班次
     aqy1.SQL.text:='select * from atd01010 a where scheno='''+dbcombobox1.text+''' and  effectdate=(select max(effectdate) from atd01010 where scheno=a.scheno and effectdate<'''+DbEdit1.text+''') ';
     aqy1.Open;
     if  not aqy1.Eof then
         datamod.ADOchangesche.FieldByName('schename').asstring:=aqy1.fieldbyname('schename').asstring;
     for i:=0 to 4 do
      begin
         if not varisnull(aqy1.fieldbyname('gotime'+inttostr(i+1)).value) then
           datamod.ADOchangesche.FieldByName('gotime'+inttostr(i+1)).value:=aqy1.fieldbyname('gotime'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('outtime'+inttostr(i+1)).value) then
           datamod.adochangesche.fieldbyname('outtime'+inttostr(i+1)).value:=aqy1.fieldbyname('outtime'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('decrease'+inttostr(i+1)).value) then
           datamod.adochangesche.fieldbyname('decrease'+inttostr(i+1)).value:=aqy1.fieldbyname('decrease'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('daytime'+inttostr(i+1)).value) then
          datamod.adochangesche.fieldbyname('daytime'+inttostr(i+1)).value:=aqy1.fieldbyname('daytime'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('add'+inttostr(i+1)).value) then
          datamod.adochangesche.fieldbyname('add'+inttostr(i+1)).value:=aqy1.fieldbyname('add'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('continue'+inttostr(i+1)).value) then
          datamod.adochangesche.fieldbyname('continue'+inttostr(i+1)).value:=aqy1.fieldbyname('continue'+inttostr(i+1)).value;

         if not varisnull(aqy1.fieldbyname('ot'+inttostr(i+1)).value) then
          datamod.adochangesche.fieldbyname('ot'+inttostr(i+1)).value:=aqy1.fieldbyname('ot'+inttostr(i+1)).value;

      end;
  end;
end;

procedure Tformchangetime.FormActivate(Sender: TObject);
begin
  dbcombobox1.Items.Clear;
  formchangetime.Update;
end;

procedure Tformchangetime.FormCreate(Sender: TObject);
begin
  fieldsum:=0;
  datetimepicker3.Date:=date;
  datetimepicker4.Date:=date;
end;

procedure Tformchangetime.DBComboBox1Enter(Sender: TObject);
begin
  dbcombobox1.Items.Clear;   //用新的开始日期从班次主档选取有效的
  aqy1.Close;
  aqy1.Connection :=Datamod.Database1;
  aqy1.SQL.Clear;     //1,10号,8号是开始日期,应该选1号的班次
  aqy1.SQL.Add('select * from atd01010 a where effectdate=(select max(effectdate) from atd01010 where scheno=a.scheno and effectdate<'''+DbEdit1.text+''')order by scheno ');
  aqy1.Open;
  aqy1.First;
  while not aqy1.eof do
  begin
    dbcombobox1.Items.Add (aqy1.fieldbyname('scheno').asstring);
    aqy1.next;
  end;
end;

procedure Tformchangetime.DBComboBox1Change(Sender: TObject);
var qry:tadoquery;
begin
  qry:=tadoquery.Create(self);
  qry.Connection:=datamod.Database1;
  qry.Close;
  qry.SQL.Clear;
  qry.SQL.Text:='select schename from atd01010 where scheno='''+dbcombobox1.Text+'''';
  qry.Open;
  dbedit26.Text:=qry.fieldbyname('schename').asstring;
end;

end.

⌨️ 快捷键说明

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