📄 ybnsdeliver1.pas
字号:
end;
end;
end;
//checkresult: //考核得分率:
with queryuse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 考核得分比率 from pub_z_checkmark where 工号=:gh and 年=:year and 月=:month');
parambyname('year').AsString:=qbnsdeliver1.fieldbyname('年').AsString;
parambyname('month').asstring:=qbnsdeliver1.fieldbyname('月').AsString;
parambyname('gh').asstring:=qbnsdeliver1.fieldbyname('工号').AsString;
prepare;
open;
if findfirst then begin
first;
while not eof do
begin
checkresult:=checkresult+fieldbyname('考核得分比率').Asfloat ;
next;
end;
end;
{ with queryuse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select count(*) count11 from pub_z_checkmark where 工号=:gh and 年=:year and 月=:month');
}
with qforcount do begin
if active then close;
unprepare;
parambyname('year').AsString:=qbnsdeliver1.fieldbyname('年').AsString;
parambyname('month').asstring:=qbnsdeliver1.fieldbyname('月').AsString;
parambyname('gh').asstring:=qbnsdeliver1.fieldbyname('工号').AsString;
// prepare;
qforcount.open;
if findfirst then
checkresult:=checkresult/fieldbyname('count11').Asfloat
else checkresult:=0;
end;
end;
end;
procedure Tfrm_ybnsdeliver1.qbnsdeliver1CalcFields(DataSet: TDataSet);
begin
with qbnsdeliver1 do begin
getmoneyratio;
getallratio;
if allratio=0 then
fieldbyname('奖金').AsFloat :=allratio
else
//原来算法fieldbyname('奖金').AsFloat :=total*ratio*fieldbyname('奖金权重').AsFloat/allratio;
fieldbyname('奖金').AsFloat :=fieldbyname('奖金总额').AsFloat/allratio*fieldbyname('奖金权重').AsFloat*checkresult;
fieldbyname('实发').AsFloat :=fieldbyname('奖金').AsFloat+fieldbyname('奖励').AsFloat-fieldbyname('应扣').AsFloat;
end;
end;
procedure Tfrm_ybnsdeliver1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
procedure Tfrm_ybnsdeliver1.FormCreate(Sender: TObject);
begin
lockedit;
enablebtn;
btn_savecheckmark.Enabled :=false;
DBGck1.Enabled :=false;
DBGck2.Enabled :=false;
with qbnsdeliver1 do begin
open;
end;
with qall do begin
open;
end;
with quse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 办事处名称 from pub_z_office');
prepare;
open;
cbbsc.Items.Clear ;
while not Eof do begin
cbbsc.Items.Add(FieldByName('办事处名称').AsString);
Next;
end;
end;
end;
procedure Tfrm_ybnsdeliver1.btn_clrClick(Sender: TObject);
begin
cbname.Text :='';
cbyear.Text :='';
cbgh.Text :='';
cbmonth.Text :='';
end;
procedure Tfrm_ybnsdeliver1.btn_brsClick(Sender: TObject);
begin
qbnsdeliver1.Filtered :=false;
DBGrid1.DataSource :=dsbnsdeliver1;
qbnsdeliver1AfterOpen(qbnsdeliver1);
end;
procedure Tfrm_ybnsdeliver1.btn_qryClick(Sender: TObject);
var
qitem,q1,q2,q3,q4:string;
begin
q1 :=cbgh.Text;
q2 :=cbname.Text;
q3 :=cbyear.Text;
q4 :=cbmonth.Text;
if (q1='') and (q2='') and (q3='') and (q4='')
then application.MessageBox('您还没有设置查询条件呢!','提示',MB_OK)
else begin
if not(cbgh.Text='') then
begin
q1:=cbgh.Text;
q1:=' 工号='''+q1+''' ';
end
else
q1:='';
if not(cbname.Text='') then
begin
q2:=cbname.Text;
q2:=' 姓名='''+q2+''' ';
end
else
q2:='';
if not(cbyear.Text='') then
begin
q3:=cbyear.Text;
q3:=' 年='''+q3+''' ';
end
else
q3:='';
if not(cbmonth.Text='') then
begin
q4:=cbmonth.Text;
q4:=' 月='''+q4+''' ';
end
else
q4:='';
//将条件累加成where 子句
if q1<>'' then qitem:=q1 else qitem:='';
if qitem='' then
if q2<>'' then qitem:=q2;
if qitem<>'' then
if q2<>'' then qitem:=qitem+' and '+q2 ;
if qitem='' then
if q3<>'' then qitem:=q3;
if qitem<>'' then
if q3<>'' then qitem:=qitem+' and '+q3;
if qitem='' then
if q4<>'' then qitem:=q4;
if qitem<>'' then
if q4<>'' then qitem:=qitem+' and '+q4;
//根据条件过滤
with qbnsdeliver1 do begin
filter:=qitem;
filtered:=true;
open;
qbnsdeliver1AfterOpen(qbnsdeliver1);
if not findfirst then begin
application.MessageBox('没有您要的信息!','提示',MB_OK);
btn_clrClick(btn_clr);
end ;
end;
end;
end;
procedure Tfrm_ybnsdeliver1.qbnsdeliver1AfterOpen(DataSet: TDataSet);
var
a1:real;
a2:real;
a3:real;
a4:real;
begin
a1:=0;
a2:=0;
a3:=0;
a4:=0;
with qbnsdeliver1 do begin
while not Eof do begin
a1:=a1+fieldbyname('奖励').asfloat;
a2:=a2+fieldbyname('应扣').asfloat;
a3:=a3+fieldbyname('实发').asfloat;
a4:=a4+fieldbyname('奖金').asfloat;
Next ;
end;
end;
Edit1.text:=floattostr(a1);
Edit2.text:=floattostr(a2);
Edit3.text:=floattostr(a3);
Edit4.text:=floattostr(a4);
end;
procedure Tfrm_ybnsdeliver1.btn_prtClick(Sender: TObject);
begin
frp_ybnsdeliver1:=Tfrp_ybnsdeliver1.Create(application);
frp_ybnsdeliver1.Preview;
frp_ybnsdeliver1.free;
end;
procedure Tfrm_ybnsdeliver1.btn_topersonClick(Sender: TObject);
begin
if (cbbsc.Text<>'') and (cbbsc.Text<>null) then begin
//判断该年月的组合是否存在,存在,则提出相关人员数据
// 否则,插入相关的人员数据
with quse1 do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select * from pub_z_checkmark where 年=:year and 月=:month and 办事处名称=:office');
parambyname('office').AsString:=cbbsc.Text;
parambyname('year').AsString:=qall.fieldbyname('年').AsString;
parambyname('month').asstring:=qall.fieldbyname('月').AsString;
open;
//如果没有office,年月的组合,就插入到pub_z_checkmark。
if not findfirst then
//提出相关工号:
with quse2 do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 工号 from pub_z_stuff where 办事处名称=''总部''');
Open;
//循环赋值:
if findfirst then
while not quse2.Eof do
with queryuse do begin
Close;
UnPrepare ;
SQL.Clear ;
SQL.Add('insert into pub_z_checkmark values(:gh,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:row2to12,:year,:month,:office)');
parambyname('office').AsString:=cbbsc.Text;
parambyname('gh').AsString:=quse2.fieldbyname('工号').Asstring;
parambyname('row2to12').AsInteger:=0;
parambyname('year').AsString:=DBComboBox2.Text;
parambyname('month').asstring:=DBComboBox1.Text;
ExecSQL;
quse2.next;
end;
end;
end;
btn_savecheckmark.Enabled :=true;
DBGck1.Enabled :=true;
DBGck2.Enabled :=true;
//出数据:
with qcheckmark do begin
if active then close;
unprepare;
parambyname('office').AsString:=cbbsc.Text;
parambyname('year').AsString:=DBComboBox2.Text;
parambyname('month').asstring:=DBComboBox1.Text;
prepare;
open;
end;
end
else application.MessageBox('请先输入办事处名称!','提示',MB_OK);
end;
procedure Tfrm_ybnsdeliver1.qallAfterScroll(DataSet: TDataSet);
begin
{ with qcheckmark do begin
if active then close;
unprepare;
parambyname('office').AsString:=cbbsc.Text;
parambyname('year').AsString:=DBEdit2.Text;
parambyname('month').asstring:=DBComboBox1.Text;
prepare;
open;
end; }
end;
procedure Tfrm_ybnsdeliver1.btn_savecheckmarkClick(Sender: TObject);
begin
with data.zxjxdata do begin
if not DatabaseJxw.intransaction then DatabaseJxw.starttransaction;
try
qcheckmark.ApplyUpdates;
DatabaseJxw.commit;
//使编辑框和按钮有反应:
LockEdit;
EnableBtn ;
btn_save.Enabled :=false;
btn_cancel.Enabled :=false;
except
DatabaseJxw.Rollback;
raise;
end;
end;
btn_savecheckmark.Enabled :=false;
DBGck1.Enabled :=false;
DBGck2.Enabled :=false;
//更新数据库中的得分比率
with qcheckmark do begin
first;
while not eof do begin
with quse1 do begin
if active then close;
unprepare;
sql.Clear;
//更新数据。
sql.Add('update pub_z_checkmark set 考核得分比率=:ratio ');
sql.Add(' where 工号=:gh and 年=:year and 月=:month and 办事处名称=:office');
parambyname('office').AsString:=cbbsc.Text;
parambyname('gh').asstring:=qcheckmark.fieldbyname('工号').Asstring;
parambyname('year').asstring:=qcheckmark.fieldbyname('年').asstring;
parambyname('month').asstring:=qcheckmark.fieldbyname('月').asstring;
parambyname('ratio').ascurrency:=0.01*(qcheckmark.fieldbyname('得分%1').AsFloat+qcheckmark.fieldbyname('得分%2').AsFloat);
ExecSQL;
end;
next;
end;
end;
end;
procedure Tfrm_ybnsdeliver1.qcheckmarkCalcFields(DataSet: TDataSet);
begin
with qcheckmark do begin
fieldbyname('共减分1').AsInteger :=fieldbyname('计划和任务完成情况').AsInteger+fieldbyname('工作质量状况').AsInteger+fieldbyname('工作责任心和主动心情况').AsInteger+fieldbyname('工作配合及团队精神').AsInteger+fieldbyname('遵章守纪情况').AsInteger+fieldbyname('仪表风貌卫生').AsInteger+fieldbyname('出勤情况').AsInteger;
fieldbyname('共减分2').AsInteger :=fieldbyname('服务态度').AsInteger+fieldbyname('服务及时性').AsInteger+fieldbyname('服务到位率').AsInteger+fieldbyname('指导工作与服务的关系处理').AsInteger;
fieldbyname('得分%1').AsFloat :=50-fieldbyname('共减分1').AsInteger/7.0;
fieldbyname('得分%2').AsFloat :=50-fieldbyname('共减分2').AsInteger/7.0;
end;
end;
procedure Tfrm_ybnsdeliver1.btn_check1Click(Sender: TObject);
begin
if qcheckmark.Eof and qcheckmark.bof then application.MessageBox('没有记录可打印!','提示',MB_OK)
else begin
frp_checkmark1:=Tfrp_checkmark1.Create(application);
frp_checkmark1.quickrep1.Preview ;
frp_checkmark1.free;
end;
end;
procedure Tfrm_ybnsdeliver1.btn_check2Click(Sender: TObject);
begin
if qcheckmark.Eof and qcheckmark.bof then application.MessageBox('没有记录可打印!','提示',MB_OK)
else begin
frp_checkmark2:=Tfrp_checkmark2.Create(application);
frp_checkmark2.quickrep1.Preview ;
frp_checkmark2.free;
end;
end;
procedure Tfrm_ybnsdeliver1.TabSheet2Enter(Sender: TObject);
begin
//给出查询的下拉列表。
with quse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 工号,姓名 from pub_z_stuff where 办事处名称=''总部''');
prepare;
open;
cbname.Items.Clear ;
cbgh.Items.Clear ;
while not Eof do begin
cbname.Items.Add(FieldByName('姓名').AsString);
cbgh.Items.Add(FieldByName('工号').AsString);
Next;
end;
end;
end;
procedure Tfrm_ybnsdeliver1.FormDestroy(Sender: TObject);
begin
frm_ybnsdeliver1:=nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -