📄 otbc.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 + -