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

📄 changecard.pas

📁 pasa人力资源考勤管理系统
💻 PAS
字号:
unit changecard;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Mask, DBCtrls, Db, ADODB, ExtCtrls, ImgList, ToolWin,
  Grids, DBGrids, ppDB, ppDBPipe, ppDBBDE, ppComm, ppRelatv, ppProd,
  ppClass, ppReport, ppCtrls, ppVar, ppPrnabl, ppBands, ppCache;

type
  TFormchangecard = class(TForm)
    DBGrid1: TDBGrid;
    ToolBar1: TToolBar;
    ToolButton6: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    tbnprint: TToolButton;
    ToolButton4: TToolButton;
    DBNavigator1: TDBNavigator;
    ImageList1: TImageList;
    Panel1: TPanel;
    DataSource1: TDataSource;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    ppBDEPipeline1: TppBDEPipeline;
    Panel2: TPanel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button1: TButton;
    Button2: TButton;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    ADOchangecard: TADODataSet;
    ADOchangecardoldcard: TStringField;
    ADOchangecardnewcard: TStringField;
    ADOchangecardvalidedate: TDateTimeField;
    ADOchangecardinvalidedate: TDateTimeField;
    ADOchangecardoperator: TStringField;
    ADOchangecardcdate: TDateTimeField;
    ADOchangecardworkno: TStringField;
    ADOchangecardname: TStringField;
    ADOQuery1: TADOQuery;
    ADOchangecarddept: TStringField;
    ppReport1: TppReport;
    ppHeaderBand1: TppHeaderBand;
    ppLine1: TppLine;
    ppLabel2: TppLabel;
    ppLabel3: TppLabel;
    ppLabel4: TppLabel;
    ppLabel5: TppLabel;
    ppLabel6: TppLabel;
    ppLabel7: TppLabel;
    ppLabel1: TppLabel;
    ppLabel8: TppLabel;
    ppLabel9: TppLabel;
    ppLabel10: TppLabel;
    ppLabel11: TppLabel;
    ppLabel12: TppLabel;
    ppSystemVariable3: TppSystemVariable;
    ppSystemVariable4: TppSystemVariable;
    ppLabel13: TppLabel;
    ppDetailBand1: TppDetailBand;
    ppDBText1: TppDBText;
    ppDBText2: TppDBText;
    ppDBText3: TppDBText;
    ppDBText4: TppDBText;
    ppDBText5: TppDBText;
    ppDBText6: TppDBText;
    ppFooterBand1: TppFooterBand;
    ppLine2: TppLine;
    ppSystemVariable1: TppSystemVariable;
    ppSystemVariable2: TppSystemVariable;
    procedure ToolButton4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2CloseUp(Sender: TObject);
    procedure DBNavigator1BeforeAction(Sender: TObject;
      Button: TNavigateBtn);
    procedure DBEdit4Exit(Sender: TObject);
    procedure DBEdit1Exit(Sender: TObject);
    procedure ADOchangecardBeforePost(DataSet: TDataSet);
    procedure DBEdit2Exit(Sender: TObject);
    procedure ADOchangecardinvalidedateChange(Sender: TField);
    procedure tbnfindClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure tbnprintClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ppReport1BeforePrint(Sender: TObject);
    procedure ppReport1AfterPrint(Sender: TObject);
    procedure ppReport1PreviewFormCreate(Sender: TObject);


    procedure MaskEdit4Exit(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure ADOchangecardBeforeEdit(DataSet: TDataSet);
    procedure ADOchangecardBeforeDelete(DataSet: TDataSet);

    private
    f:string;{ Private declarations }
  public

    { Public declarations }
  end;

var
  Formchangecard: TFormchangecard;

implementation

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

procedure TFormchangecard.ToolButton4Click(Sender: TObject);
begin
   close;
end;

procedure TFormchangecard.FormCreate(Sender: TObject);
begin
   datetimepicker1.date:=date;
   datetimepicker2.date:=date;
   adochangecard.Open;
end;

procedure TFormchangecard.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   adochangecard.close;
   formchangecard:=nil;
   action:=cafree;
end;

procedure TFormchangecard.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
   dbgrid_keypress(sender,key);
end;

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

procedure TFormchangecard.DateTimePicker1CloseUp(Sender: TObject);
begin
   adochangecard.edit;
   adochangecard.fieldbyname('validedate').asstring:=datetostr(datetimepicker1.date);
end;

procedure TFormchangecard.DateTimePicker2CloseUp(Sender: TObject);
begin
   adochangecard.edit;
   adochangecard.fieldbyname('invalidedate').asstring:=datetostr(datetimepicker2.date);
end;

procedure TFormchangecard.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
   case button of
     nbinsert,nbedit:dbedit1.setfocus;
   end;
end;

procedure TFormchangecard.DBEdit4Exit(Sender: TObject);
begin
   if adochangecard.state=dsinsert then
   begin
      adochangecard.Post;
      adochangecard.insert;
   end else adochangecard.post;
   dbedit1.setfocus;
end;

procedure TFormchangecard.DBEdit1Exit(Sender: TObject);
begin
   with datamod do
   begin
      Query1.close;
      Query1.sql.Text:='Select cardno,name,workno,dept from per24010 where cardno='''+Dbedit1.text+''' and leave=0 ';
      Query1.open;
      if Query1.EOF then
      begin
         Application.messagebox(pchar('你输入的卡号:'+dbedit1.text+'不存在,请重新输入!'),'卡号错误',mb_ok+mb_iconerror);
         dbedit1.setfocus;
      end
      else
      begin
        adochangecard.fieldbyname('workno').asstring:=query1.fieldbyname('workno').asstring;
        adochangecard.fieldbyname('name').asstring:=query1.fieldbyname('name').asstring;
        adochangecard.fieldbyname('dept').asstring:=query1.fieldbyname('dept').asstring;
      end;


      //Query1.close;
   end;
end;

procedure TFormchangecard.ADOchangecardBeforePost(DataSet: TDataSet);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
   if (adochangecard.FieldByName('invalidedate').isnull) or (adochangecard.fieldbyname('invalidedate').asstring=fmat1) then
      adochangecard.fieldbyname('invalidedate').value:=null;
   adochangecard.fieldbyname('operator').asstring:=pubworkname;
   adochangecard.fieldbyname('cdate').asstring:=formatdatetime('yyyy/mm/dd',now);
end;

procedure TFormchangecard.DBEdit2Exit(Sender: TObject);
begin
   with datamod do
  if length(DBEdit1.Text)<>length(DBEdit2.Text) then
  begin
    Application.MessageBox('输入的卡号位数长度不够!!!!','系统提示',48);
    DBEdit2.SetFocus;
  end
  else
  begin
    Query1.close;
    Query1.sql.Text:='Select cardno from per24010 where cardno='''+Dbedit2.text+''' and leave=0 ';
    Query1.open;
    if NOT Query1.EOF then
    begin
      Application.messagebox(pchar('你输入的卡号:'+dbedit2.text+'已被使用,请重新输入!'),'卡号重复',mb_ok+mb_iconerror);
      dbedit2.setfocus;
    end;
    Query1.close;
  end;
end;

procedure TFormchangecard.ADOchangecardinvalidedateChange(Sender: TField);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
   if adochangecard.fieldbyname('invalidedate').asstring=fmat1 then
      adochangecard.fieldbyname('invalidedate').value:=null;
end;

procedure TFormchangecard.tbnfindClick(Sender: TObject);
begin
  if assigned(formcanfind) then  formcanfind.close;
  findrecorder(adochangecard,'Adochangecard','per_changecard');   //调用publicfuction中的查询功能
end;

procedure TFormchangecard.Button2Click(Sender: TObject);
begin
   panel2.visible:=false;
end;

procedure TFormchangecard.tbnprintClick(Sender: TObject);
begin
   panel2.visible:=true;
end;

procedure TFormchangecard.Button1Click(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
   if radiobutton2.checked then
  begin
    if (maskedit1.Text<>fmat1) and (maskedit2.Text<>fmat1) then
    begin
    with adochangecard do
    begin
     close;
     commandtext:='Select * from per_changecard where validedate between '''+maskedit1.text+''' and '''+maskedit2.text+''' order by  validedate,workno ';
     open;
     pplabel8.caption:=maskedit1.text+'~~'+maskedit2.text;
    end;
    end
    else
    begin
      Application.messagebox('输入要列印的离职范围 !!!!!! ','系统提示',48);
      exit;
      maskedit1.SetFocus;
    end;
  end
  else
  begin
   adochangecard.close;
   adochangecard.commandtext:='Select * from per_changecard order by  validedate,workno ';
   adochangecard.open;
  end;
    panel2.visible:=false;
    pplabel1.caption:=companyname1;
    pplabel12.Caption:=pubworkname;
    pplabel13.caption:='换卡作业资料明细';
   ppreport1.print;
end;

procedure TFormchangecard.ppReport1BeforePrint(Sender: TObject);
begin
   if radiobutton2.checked then
   begin
      with adochangecard do
      begin
         disablecontrols;
         close;
         commandtext:='Select * from per_changecard where validedate between '''+maskedit1.text+''' and '''+maskedit2.text+''' ';
         open;
      end;
   end;
   pplabel1.caption:=companyname1;
end;

procedure TFormchangecard.ppReport1AfterPrint(Sender: TObject);
begin
      with adochangecard do
      begin
         close;
         commandtext:='Select * from per_changecard ';
         open;
         enablecontrols;
      end;
      panel2.visible:=false;
end;

procedure TFormchangecard.ppReport1PreviewFormCreate(Sender: TObject);
begin
  tppReport(Sender).PreviewForm.WindowState:=wsMaximized;
end;




procedure TFormchangecard.MaskEdit4Exit(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  if maskedit2.text<>fmat1 then
    if (not isdate(maskedit1.Text)) or (not isdate(maskedit2.text)) then
      begin
       Application.MessageBox('对不起,您输入的不是有效日期','Warning',mb_ok+mb_iconwarning);
       maskedit1.SetFocus;
      end
    else begin
      Adochangecard.close;
      Adochangecard.commandtext:='Select * from per_changecard where validedate<='''+maskedit2.text+''' and validedate>='''+maskedit1.text+''' order by validedate,oldcard ';
      Adochangecard.open;
    end;
end;

procedure TFormchangecard.ToolButton6Click(Sender: TObject);
begin
   adoquery1.close;
   adoquery1.SQL.Clear;
  adoquery1.sql.add('update per24010 set cardno=per_changecard.newcard from per_changecard  where per_changecard.workno=per24010.workno and per_changecard.oldcard=per24010.cardno and ((per_changecard.invalidedate is null and '''+formatdatetime('yyyy/mm/dd',now)+'''>per_changecard.validedate) or (per_changecard.invalidedate is not null and '''+formatdatetime('yyyy/mm/dd',now)+''' between per_changecard.validedate and per_changecard.invalidedate))' );

 //adoquery1.sql.add( 'update per24010 set cardno=per_changecard.oldcard from per_changecard  where per_changecard.workno=per24010.workno and per_changecard.invalidedate is not null and '''+formatdatetime('yyyy/mm/dd',now)+'''>per_changecard.invalidedate ');
  adoquery1.execsql;
   adochangecard.close;
   adochangecard.filtered:=false;
   adochangecard.filter:='';
   adochangecard.commandtext:='Select * from per_changecard order by validedate,oldcard';
   adochangecard.open;
end;

procedure TFormchangecard.DBGrid1TitleClick(Column: TColumn);
begin
    if f='DESC' then
     f:='ASC'
   else
     f:='DESC';
   adochangecard.Sort :=column.FieldName+' '+f;
end;

procedure TFormchangecard.ADOchangecardBeforeEdit(DataSet: TDataSet);
begin
  writerecorder(ADOchangecard,false);
end;

procedure TFormchangecard.ADOchangecardBeforeDelete(DataSet: TDataSet);
begin
  writerecorder(adochangecard,true);
end;

end.

⌨️ 快捷键说明

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