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

📄 fare.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    btn_edit.Enabled :=true;
end;

//***************以上是自定义的按纽和编辑的可否应用部分*********************

//***************以下是按纽操作。*********************

procedure Tfrm_fare.btn_firstClick(Sender: TObject);
begin
        if not qfare.Bof then qfare.First;
end;

procedure Tfrm_fare.btn_lastClick(Sender: TObject);
begin
        if not qfare.eof then qfare.Last;
end;
 procedure Tfrm_fare.btn_prevClick(Sender: TObject);
begin
        if not qfare.Bof then qfare.Prior;
end;

procedure Tfrm_fare.btn_nextClick(Sender: TObject);
begin
        if not qfare.Eof then qfare.Next;
end;
procedure Tfrm_fare.btn_addnewClick(Sender: TObject);
var
  Present: TDateTime;
begin
        UnlockEdit;
        qfare.append;

        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;
//给下面审核栏默认值:
//日期:
    Present:= Now;
    qfare.fieldbyname('录入日期').AsString :=datetimetostr(present);
//人名:
  with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 主管,审核,录入 from pub_z_fare');
    prepare;
    open;
    last;
    qfare.fieldbyname('主管').AsString:=fieldbyname('主管').AsString;
    qfare.fieldbyname('审核').AsString:=fieldbyname('审核').AsString;
    qfare.fieldbyname('录入').AsString:=fieldbyname('录入').AsString;

  end;


end;

procedure Tfrm_fare.btn_saveClick(Sender: TObject);
begin
    if (qfare.fieldbyname('年').AsString='') or (qfare.fieldbyname('月').AsString='') or (qfare.fieldbyname('编制单位').AsString='') then
       application.MessageBox('年、月及编制单位请完整填写!','提示',MB_OK)
    else begin
      with data.zxjxdata do begin
      if not DatabaseJxw.intransaction then DatabaseJxw.starttransaction;
      try
      qfare.ApplyUpdates;
      DatabaseJxw.commit;
        qfare.CommitUpdates  ;
        //使编辑框和按钮有反应:
        LockEdit;
        EnableBtn ;
        btn_save.Enabled :=false;
        btn_cancel.Enabled :=false;
      except
        DatabaseJxw.Rollback;
        raise;
      end;
      end;
    end;
{    qfare.Close ;
    qfare.Open ;}
end;


procedure Tfrm_fare.btn_editClick(Sender: TObject);
begin

        qfare.Edit ;
        //让文本框可以编辑
        UnlockEdit;
        //使一些按钮失效
        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;

end;


procedure Tfrm_fare.btn_cancelClick(Sender: TObject);
begin
        qfare.Cancel ;

        lockedit;

        enablebtn;
        btn_cancel.Enabled :=false;
        btn_save.Enabled :=false;

end;


procedure Tfrm_fare.btn_deleteClick(Sender: TObject);
begin
     qfare.Delete;
     qfare.ApplyUpdates ;
     lockedit;

     enablebtn;
     btn_delete.Enabled :=false;
     btn_save.Enabled :=false;

end;
//***************以上是按纽操作。*************

procedure Tfrm_fare.TabSheet2Enter(Sender: TObject);
begin
//给出查询页的下拉列表。
 
  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_fare.btn_brsClick(Sender: TObject);
begin
    qfare.Filtered :=false;
    DBGrid1.DataSource :=dsfare;
end;

procedure Tfrm_fare.btn_qryClick(Sender: TObject);
var
  qitem,q1,q2,q3:string;
begin

  q1 :=cbyear.Text;
  q2 :=cbmonth.Text;
  q3 :=cbbsc.Text;

  if (q1='') and (q2='') and (q3='')
  then  application.MessageBox('您还没有设置查询条件呢!','提示',MB_OK)
  else  begin

    if not(cbmonth.Text='') then
      begin
      q2:=cbmonth.Text;
      q2:=' 月='''+q2+''' ';
      end
    else
      q2:='';
    if not(cbyear.Text='') then
      begin
      q1:=cbyear.Text;
      q1:=' 年='''+q1+''' ';
      end
    else
      q1:='';
    if not(cbbsc.Text='') then
      begin
      q3:=cbbsc.Text;
      q3:=' 编制单位='''+q3+''' ';
      end
    else
      q3:='';

     //将条件累加成子句
     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;

   //根据条件过滤
    with qfare do begin

      filter:=qitem;
      filtered:=true;

      if not findfirst then  begin
        application.MessageBox('没有您要的信息!','提示',MB_OK);
        btn_clrClick(btn_clr);
        end ;
    end;

 end;

end;

procedure Tfrm_fare.btn_clrClick(Sender: TObject);
begin
      cbyear.Text :='';
      cbbsc.Text :='';
      cbmonth.Text :='';

end;

procedure Tfrm_fare.FormCreate(Sender: TObject);
begin
    lockedit;
    enablebtn;

  //通过qforuse读出办事处名称列表
  DBComboBox2.Items.Clear ;
  with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 办事处名称 from pub_z_office');
    prepare;
    open;
    while not eof do begin
      DBComboBox2.Items.Add(fieldbyname('办事处名称').AsString);
      next;
    end;
  end;


    with qfare do begin
    open;
    end;
end;

procedure Tfrm_fare.qfareCalcFields(DataSet: TDataSet);
var
row1,row2,row3,row4,row5,row6,row7,row8,row9,row10:real;
row11,row12,row13,row14,row15,row16:real;
begin
  with qfare do begin
   row1:=fieldbyname('工资补贴_本月预算').asfloat+fieldbyname('佣金_本月预算').asfloat+fieldbyname('展览广告_本月预算').asfloat+fieldbyname('交际应酬_本月预算').asfloat;
   row1:=row1+fieldbyname('国内交通_本月预算').asfloat+fieldbyname('海外交通_本月预算').asfloat+fieldbyname('保险费_本月预算').asfloat+fieldbyname('办公费_本月预算').asfloat;
   row1:=row1+fieldbyname('培训费_本月预算').asfloat+fieldbyname('律师费_本月预算').asfloat+fieldbyname('员工福利_本月预算').asfloat+fieldbyname('物料消耗_本月预算').asfloat;
   fieldbyname('合计_本月预算').asfloat:=row1+fieldbyname('通讯费_本月预算').asfloat+fieldbyname('运输费_本月预算').asfloat+fieldbyname('其他_本月预算').asfloat;

   row1:=fieldbyname('工资补贴_本月实际').asfloat+fieldbyname('佣金_本月实际').asfloat+fieldbyname('展览广告_本月实际').asfloat+fieldbyname('交际应酬_本月实际').asfloat;
   row1:=row1+fieldbyname('国内交通_本月实际').asfloat+fieldbyname('海外交通_本月实际').asfloat+fieldbyname('保险费_本月实际').asfloat+fieldbyname('办公费_本月实际').asfloat;
   row1:=row1+fieldbyname('培训费_本月实际').asfloat+fieldbyname('律师费_本月实际').asfloat+fieldbyname('员工福利_本月实际').asfloat+fieldbyname('物料消耗_本月实际').asfloat;
   fieldbyname('合计_本月实际').asfloat:=row1+fieldbyname('通讯费_本月实际').asfloat+fieldbyname('运输费_本月实际').asfloat+fieldbyname('其他_本月实际').asfloat;

   with Queryforuse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select * from pub_z_fare where 编制单位=:office and 年=:year');
    parambyname('office').AsString :=qfare.fieldbyname('编制单位').AsString ;
    parambyname('year').AsString :=qfare.fieldbyname('年').AsString ;
    prepare;
    open;
    row1:=0;
    row2:=0;
    row3:=0;
    row4:=0;
    row5:=0;
    row6:=0;
    row7:=0;
    row8:=0;
    row9:=0;
    row10:=0;
    row11:=0;
    row12:=0;
    row13:=0;
    row14:=0;
    row15:=0;
    row16:=0;

    while not eof do begin
      if strtoint(fieldbyname('月').AsString)<=strtoint(qfare.fieldbyname('月').AsString) then
           row1:=row1+fieldbyname('工资补贴_本月实际').asfloat;
           row2:=row2+fieldbyname('佣金_本月实际').asfloat;
           row3:=row3+fieldbyname('展览广告_本月实际').asfloat;
           row4:=row4+fieldbyname('交际应酬_本月实际').asfloat;
           row5:=row5+fieldbyname('国内交通_本月实际').asfloat;
           row6:=row6+fieldbyname('海外交通_本月实际').asfloat;
           row7:=row7+fieldbyname('保险费_本月实际').asfloat;
           row8:=row8+fieldbyname('办公费_本月实际').asfloat;
           row9:=row9+fieldbyname('培训费_本月实际').asfloat;
           row10:=row10+fieldbyname('律师费_本月实际').asfloat;
           row11:=row11+fieldbyname('员工福利_本月实际').asfloat;
           row12:=row12+fieldbyname('物料消耗_本月实际').asfloat;
           row13:=row13+fieldbyname('通讯费_本月实际').asfloat;
           row14:=row14+fieldbyname('运输费_本月实际').asfloat;
           row15:=row15+fieldbyname('其他_本月实际').asfloat;
//           row16:=row16+fieldbyname('合计_本月实际').asfloat;
      next;
    end;
   end;

  fieldbyname('工资补贴_本年累计').asfloat:=row1;
  fieldbyname('佣金_本年累计').asfloat:=row2;
  fieldbyname('展览广告_本年累计').asfloat:=row3;
  fieldbyname('交际应酬_本年累计').asfloat:=row4;
  fieldbyname('国内交通_本年累计').asfloat:=row5;
  fieldbyname('海外交通_本年累计').asfloat:=row6;
  fieldbyname('保险费_本年累计').asfloat:=row7;
  fieldbyname('办公费_本年累计').asfloat:=row8;
  fieldbyname('培训费_本年累计').asfloat:=row9;
  fieldbyname('律师费_本年累计').asfloat:=row10;
  fieldbyname('员工福利_本年累计').asfloat:=row11;
  fieldbyname('物料消耗_本年累计').asfloat:=row12;
  fieldbyname('通讯费_本年累计').asfloat:=row13;
  fieldbyname('运输费_本年累计').asfloat:=row14;
  fieldbyname('其他_本年累计').asfloat:=row15;
//  fieldbyname('合计_本年累计').asfloat:=row16;


   row1:=fieldbyname('工资补贴_本年累计').asfloat+fieldbyname('佣金_本年累计').asfloat+fieldbyname('展览广告_本年累计').asfloat+fieldbyname('交际应酬_本年累计').asfloat;
   row1:=row1+fieldbyname('国内交通_本年累计').asfloat+fieldbyname('海外交通_本年累计').asfloat+fieldbyname('保险费_本年累计').asfloat+fieldbyname('办公费_本年累计').asfloat;
   row1:=row1+fieldbyname('培训费_本年累计').asfloat+fieldbyname('律师费_本年累计').asfloat+fieldbyname('员工福利_本年累计').asfloat+fieldbyname('物料消耗_本年累计').asfloat;
   fieldbyname('合计_本年累计').asfloat:=row1+fieldbyname('通讯费_本年累计').asfloat+fieldbyname('运输费_本年累计').asfloat+fieldbyname('其他_本年累计').asfloat;
 end;

end;

procedure Tfrm_fare.btn_prtClick(Sender: TObject);
begin
     frp_fare:=Tfrp_fare.Create(application);
     frp_fare.QuickRep1.Preview;
     frp_fare.free;
end;

procedure Tfrm_fare.qfareAfterOpen(DataSet: TDataSet);
begin
   with qfare do begin
     first;
     while not eof do begin
          with quse do begin
            if active then close;
            unprepare;
            sql.Clear;
            sql.Add('select * from pub_z_fare where 编制单位=:bscmc and 年=:year and 月=:month');
            parambyname('bscmc').AsString:=qfare.fieldbyname('编制单位').Asstring;
            parambyname('year').asstring:=qfare.fieldbyname('年').Asstring;
            parambyname('month').asstring:=qfare.fieldbyname('月').Asstring;
            open;
            //如果没有同样合同号和机型的记录,就插入。
            if  not findfirst then
//            sql.Add('insert into crttbl_mainpay values(:htbh,:bscmc,:ywy,:xh,:tsh,:dj,:jk,:ysjbxf,:fjzzf,:tbgcjk,:jsf,:qt,:zg,:sh,:lr,:lrrq)')
            //否则,更新数据。
            else begin
            sql.Add('update pub_z_fare set 合计_本年累计=:heji ');
            sql.Add('  where 编制单位=:bscmc and 年=:year and 月=:month');
            end;

            parambyname('heji').ascurrency:=qfare.fieldbyname('合计_本年累计').ascurrency;
            ExecSQL;

          end;
     next;
     end;
   end;

end;

procedure Tfrm_fare.FormDestroy(Sender: TObject);
begin
      frm_fare:=nil;
end;

end.

⌨️ 快捷键说明

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