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

📄 ybnsdeliver1.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        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 + -