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

📄 otbc.pas

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

interface

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

type
  TFormotbc = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Button3: TButton;
    ADODataSet1: TADODataSet;
    ADODataSet2: TADODataSet;
    qry1: TADOQuery;
    qry2: TADOQuery;
    GroupBox1: TGroupBox;
    MaskEdit3: TMaskEdit;
    DateTimePicker3: TDateTimePicker;
    Button1: TButton;
    ADODataSet3: TADODataSet;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    ppReport1: TppReport;
    ppBDEPipeline1: TppBDEPipeline;
    ppHeaderBand1: TppHeaderBand;
    ppDetailBand1: TppDetailBand;
    ppFooterBand1: TppFooterBand;
    ppSystemVariable1: TppSystemVariable;
    ppSystemVariable2: TppSystemVariable;
    ppDBText1: TppDBText;
    ppLabel2: TppLabel;
    ppDBText2: TppDBText;
    ppLabel3: TppLabel;
    ppDBText3: TppDBText;
    ppLabel4: TppLabel;
    ppDBText4: TppDBText;
    ppLabel5: TppLabel;
    ppDBText5: TppDBText;
    ppLabel6: TppLabel;
    ppDBText6: TppDBText;
    ppLabel7: TppLabel;
    ppDBText7: TppDBText;
    ppLabel8: TppLabel;
    ppDBText8: TppDBText;
    ppLabel9: TppLabel;
    ppLine1: TppLine;
    ppLine2: TppLine;
    ppTitleBand1: TppTitleBand;
    ppLabel1: TppLabel;
    ppGroup1: TppGroup;
    ppGroupHeaderBand1: TppGroupHeaderBand;
    ppGroupFooterBand1: TppGroupFooterBand;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit1: TEdit;
    Label10: TLabel;
    ppLabel10: TppLabel;
    ppDBText9: TppDBText;
    ppLabel11: TppLabel;
    ppDBText10: TppDBText;
    procedure Button3Click(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2CloseUp(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DateTimePicker3CloseUp(Sender: TObject);
    procedure ppReport1BeforePrint(Sender: TObject);
    procedure ppReport1PreviewFormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Formotbc: TFormotbc;
  ygbh:integer;
  wno:string;
implementation

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

procedure TFormotbc.Button3Click(Sender: TObject);
begin
  ADODataSet1.Close;
  ADODataSet2.Close;
  listbox1.Items.Clear;
  listbox2.items.clear;
  close;
end;

procedure TFormotbc.DateTimePicker1CloseUp(Sender: TObject);
begin
  maskedit1.Text:=datetostr(datetimepicker1.datetime);
end;

procedure TFormotbc.DateTimePicker2CloseUp(Sender: TObject);
begin
  maskedit2.text:=datetostr(datetimepicker2.datetime);
end;

procedure TFormotbc.MaskEdit1Exit(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  if maskedit1.text<>fmat1  then
  begin
    ADODataSet1.Close;
    ADODataSet1.Filter:='rq='''+maskedit1.text+''' ';
    ADODataSet1.Filtered:=true;
    ADODataSet1.Open;

    ADODataSet1.First;
    listbox1.items.clear;
    while not ADODataSet1.Eof do
      begin                            
        listbox1.Items.Add(ADODataSet1.fieldbyname('workno').asstring+'     '+ADODataSet1.fieldbyname('facthours').asstring+'             '+ADODataSet1.fieldbyname('name').asstring );
        ADODataSet1.Next;
      end;
    ListBox1.SetFocus;
   end;
end;

procedure TFormotbc.MaskEdit2Exit(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  if maskedit2.text<>fmat1  then
  begin
    listbox2.Items.clear;
    ADODataSet2.Close;
    ADODataSet2.Filter:='rq='''+maskedit2.text+''' ';
    ADODataSet2.Filtered:=true;
    ADODataSet2.Open;

    ADODataSet2.First;
    while not ADODataSet2.Eof do
      begin                     //  Qry1.fieldbyname('workno').asstring
        listbox2.Items.Add(ADODataSet2.fieldbyname('workno').asstring +'     '+ADODataSet2.fieldbyname('ot').asstring+'            '+ADODataSet2.fieldbyname('name').asstring+'     '+ADODataSet2.fieldbyname('rq').asstring);
        ADODataSet2.Next;
      end;


  end;
end;

procedure TFormotbc.ListBox1Click(Sender: TObject);
var
  i:integer;
  yrq:string;
begin
  listbox2.Items.Clear;
  ADODataSet2.Close;
  ADODataSet2.Filter:='';
  aDODataSet2.Filtered:=false;
  ADODataSet2.Open;
  
  datamod.adopublic.open;
  ygbh:=datamod.adopublicworknolength.AsInteger;
  for i:=0 to listbox1.items.count-1 do
    if listbox1.Selected[i] then
      break;
  wno:=trim(copy(listbox1.items[i],1,ygbh));
  //k:=strtoint(trim(copy(listbox1.items[i],ygbh+5,length(listbox1.items[i]))));

  yrq:=copy(MaskEdit1.Text,1,7);
  if wno<>'' then
    begin
      ADODataSet2.Close;
      ADODataSet2.commandtext:='select a.workno,b.name,a.cardno,a.ot,convert(varchar(10),a.rq,111) as  rq,a.ot from atd32010 a left join per24010 b on a.workno=b.workno where  a.ot>0  and   a.workno='''+wno+'''  and  left(convert(varchar(10),a.rq,111),7)='''+yrq+''' ';
      ADODataSet2.Open;

      ADODataSet2.First;
      while not ADODataSet2.Eof do
        begin
          listbox2.Items.Add(ADODataSet2.fieldbyname('workno').asstring +'     '+ADODataSet2.fieldbyname('ot').asstring+'            '+ADODataSet2.fieldbyname('name').asstring+'     '+ADODataSet2.fieldbyname('rq').asstring);
          ADODataSet2.Next;
        end;
    end;

end;

procedure TFormotbc.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    ListBox1.SetFocus;
end;

procedure TFormotbc.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    ListBox2.SetFocus; 
end;

procedure TFormotbc.Button2Click(Sender: TObject);
var
  i,j:integer;
  k1,k2,kt:real;
  rq2,t1,t2,q1,q2:string;
begin
  if Application.MessageBox('你确定要补吗?','齐协提示', mb_yesno+MB_ICONINFORMATION)=idno then
    exit;
  if listbox2.Items.count<1 then exit
  else
  if listbox2.Items.count=1 then
    i:=0
  else
  for i:=0 to listbox2.items.count-1 do
    if listbox2.Selected[i] then
      break;
  rq2:=trim(copy(listbox2.items[i],length(listbox2.items[i])-10,length(listbox2.items[i])));
  k2:=strtofloat( trim(copy(listbox2.items[i],ygbh+5,length(listbox2.items[i])-40 )) );

  for j:=0 to listbox1.items.count-1 do
    if listbox1.Selected[j] then
      break;

  k1:=strtofloat( trim(copy(listbox1.items[j],ygbh+5,length(listbox1.items[j])-25 )) );
  kt:=k1+k2;
  q1:=floattostr(k1);
  q2:=floattostr(k2);

  if kt>8 then
    begin
      k2:=kt-8;
      k1:=8
    end
  else  begin
      k2:=0;
      k1:=kt;
    end;
  t1:=floattostr(k1);
  t2:=floattostr(k2);

  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('update atd32010 set facthours='+t1+' where rq='''+MaskEdit1.text+''' and workno='''+wno+''' ');
  qry1.ExecSQL;
  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('update atd32010 set ot='+t2+' where rq='''+rq2+''' and workno='''+wno+''' ');
  qry1.ExecSQL;

  ADOQuery1.Close;
  ADOQuery1.SQL.Add('insert into  ot11010(workno,facthours ,rq1,rq2,ot,newfacthours,newot) select '''+wno+''','+q1+' ,'''+MaskEdit1.text+''','''+rq2+''','+q2+','+t1+', '+t2+' ');
  ADOQuery1.SQL.Add('update ot11010 set cardno=a.cardno ,dept=a.dept,name=a.name  from per24010 a where a.workno=ot11010.workno');
  ADOQuery1.ExecSQL;

  listbox1.Items.Clear;
  ADODataSet1.Close;
  ADODataSet1.CommandText:='select  a.workno,b.changebcno,a.facthours,a.rq,c.name  from  atd32010  a  left join  atd08011 b  on  a.workno=b.workno  left  join per24010  c  on  a.workno=c.workno  '+
                            'where isnull(b.changebcno,'''')=''补'' and  a.facthours<8 order by a.workno';

  ADODataSet1.open;
  MaskEdit1Exit(sender);
  ADODataSet2.Close;
  listbox2.items.Clear;
  showmessage('已成功完成补班');
end;

procedure TFormotbc.FormCreate(Sender: TObject);
begin
  DateTimePicker1.date:=date;
  DateTimePicker2.date:=date;
  DateTimePicker3.date:=date;
  ADODataSet1.Close;
  ADODataSet1.open;
end;

procedure TFormotbc.DateTimePicker3CloseUp(Sender: TObject);
begin
  MaskEdit3.text:=copy(datetostr(datetimepicker3.datetime),1,7);
end;

procedure TFormotbc.ppReport1BeforePrint(Sender: TObject);
begin
  ppLabel1.Caption:=MaskEdit3.text+'加班补正班明细表';
end;

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

procedure TFormotbc.Button1Click(Sender: TObject);
begin
  ADODataSet3.Close;
  ADODataSet3.CommandText:='select  *  from ot11010 where  left(rq1,7)='''+MaskEdit3.text+''' ';
  ADODataSet3.open;
  ppreport1.DeviceType:='Screen';
  ppreport1.print;
end;

procedure TFormotbc.Edit1Exit(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  if (maskedit1.text<>fmat1) and (edit1.text<>'')  then
  begin
    ADODataSet1.Close;
    ADODataSet1.Filter:='rq='''+maskedit1.text+''' and  workno='''+trim(edit1.Text)+''' ';
    ADODataSet1.Filtered:=true;
    ADODataSet1.Open;

    ADODataSet1.First;
    //showmessage(ADODataSet1.fieldbyname('workno').asstring);
    listbox1.items.clear;
    while not ADODataSet1.Eof do
      begin                              //  Qry1.fieldbyname('workno').asstring
        listbox1.Items.Add(ADODataSet1.fieldbyname('workno').asstring+'     '+ADODataSet1.fieldbyname('facthours').asstring+'             '+ADODataSet1.fieldbyname('name').asstring );
        ADODataSet1.Next;
      end;
    ListBox1.SetFocus;
   end;
end;

procedure TFormotbc.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    ListBox1.SetFocus;
end;

end.

⌨️ 快捷键说明

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