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

📄 bonusratio1.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
字号:
unit bonusratio1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBTables, DB, StdCtrls, Grids, DBGrids, Mask, DBCtrls, ExtCtrls,
  ComCtrls;

type
  Tfrm_bonusratio1 = class(TForm)
    qbr1: TQuery;
    dsbr1: TDataSource;
    UpdateSqbr1: TUpdateSQL;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBComboBox4: TDBComboBox;
    Panel2: TPanel;
    btn_first: TButton;
    btn_prev: TButton;
    btn_next: TButton;
    btn_last: TButton;
    btn_addnew: TButton;
    btn_edit: TButton;
    btn_save: TButton;
    btn_cancel: TButton;
    btn_delete: TButton;
    TabSheet2: TTabSheet;
    Panel3: TPanel;
    btn_brs: TButton;
    btn_qry: TButton;
    btn_clr: TButton;
    btn_prt: TButton;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox8: TGroupBox;
    cbxm: TComboBox;
    GroupBox9: TGroupBox;
    cbgh: TComboBox;
    GroupBox10: TGroupBox;
    cbgw: TComboBox;
    quse: TQuery;
    qbr1BDEDesigner: TStringField;
    qbr1BDEDesigner2: TFloatField;
    qbr1BDEDesigner3: TFloatField;
    qbr1BDEDesigner4: TFloatField;
    qbr1BDEDesigner5: TStringField;
    qbr1BDEDesigner6: TStringField;
    qbr1BDEDesigner7: TStringField;
    qbr1BDEDesigner8: TStringField;
    qbr1BDEDesigner9: TStringField;
    qbr1BDEDesigner10: TDateTimeField;
    qbr1BDEDesigner11: TStringField;
    qbr1BDEDesigner12: TStringField;
    dsforqbr1: TDataSource;
    qforqbr1: TQuery;
    GroupBox1: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBComboBox2: TDBComboBox;
    DBComboBox5: TDBComboBox;
    DBComboBox3: TDBComboBox;

    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btn_firstClick(Sender: TObject);
    procedure btn_lastClick(Sender: TObject);
    procedure btn_addnewClick(Sender: TObject);
    procedure btn_saveClick(Sender: TObject);
    procedure btn_prevClick(Sender: TObject);
    procedure btn_nextClick(Sender: TObject);
    procedure btn_editClick(Sender: TObject);
    procedure btn_cancelClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btn_brsClick(Sender: TObject);
    procedure btn_qryClick(Sender: TObject);
    procedure btn_clrClick(Sender: TObject);
    procedure DBComboBox4Exit(Sender: TObject);
    procedure TabSheet2Enter(Sender: TObject);
    procedure btn_prtClick(Sender: TObject);
    procedure DBComboBox5Exit(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
    { Private declarations }
      procedure LockEdit;
    //定义函数,来改变各个输入框是否可以编辑,当用户再增加新记录
    //或者编辑记录以前,不可以修改
    procedure UnlockEdit;
    //定义函数,用来让输入文本框可以编辑
    procedure DisableBtn;
    //定义过程,用来使某些按钮失效
    procedure EnableBtn;
    //定义过程,用来使某些按钮有效
  public
    { Public declarations }
 
  end;

var
  Frm_bonusratio1: TFrm_bonusratio1;

implementation

uses  data,rp_bonusratio1;



{$R *.dfm}
//***************释放空间********************
procedure TFrm_bonusratio1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
        Action:=cafree;
end;

//***************以下是自定义的按纽和编辑的可否应用部分*********************
//自定义过程,用来确定每个Edit空间是否可以编辑
procedure TFrm_bonusratio1.LockEdit;
begin

       DBEdit4.ReadOnly :=true;
       DBEdit5.ReadOnly :=true;
       DBEdit6.ReadOnly :=true;
       DBEdit7.ReadOnly :=true;
       DBEdit8.ReadOnly :=true;
       DBEdit9.ReadOnly :=true;
       DBEdit3.ReadOnly :=true;
       DBEdit10.ReadOnly :=true;
       DBComboBox2.ReadOnly :=true;
       DBComboBox3.ReadOnly :=true;
       DBComboBox4.ReadOnly :=true;
       DBComboBox5.ReadOnly :=true;
       DBComboBox2.Enabled  :=false;
       DBComboBox3.Enabled  :=false;
       DBComboBox4.Enabled  :=false;
       DBComboBox5.Enabled  :=false;

end;

procedure TFrm_bonusratio1.UnlockEdit ;
begin



       DBEdit4.ReadOnly :=false;
       DBEdit5.ReadOnly :=false;
       DBEdit6.ReadOnly :=false;
       DBEdit7.ReadOnly :=false;
       DBEdit8.ReadOnly :=false;
       DBEdit9.ReadOnly :=false;
       DBEdit10.ReadOnly :=true;
       DBEdit3.ReadOnly :=true;
       DBComboBox2.ReadOnly :=false;
       DBComboBox3.ReadOnly :=false;
       DBComboBox4.ReadOnly :=false;
       DBComboBox5.ReadOnly :=false;
       DBComboBox2.Enabled  :=true;
       DBComboBox3.Enabled  :=true;
       DBComboBox4.Enabled  :=true;
       DBComboBox5.Enabled  :=true;


end;


procedure TFrm_bonusratio1.DisableBtn ;
begin
    btn_first.Enabled :=false;
    btn_prev.Enabled :=false;
    btn_next.Enabled :=false;
    btn_last.Enabled :=false;

    btn_addnew.Enabled :=false;
    btn_edit.Enabled :=false;
end;

procedure TFrm_bonusratio1.EnableBtn ;
begin
    btn_first.Enabled :=true;
    btn_prev.Enabled :=true;
    btn_next.Enabled :=true;
    btn_last.Enabled :=true;

    btn_addnew.Enabled :=true;
    btn_edit.Enabled :=true;

end;

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

//***************以下是按纽操作。*********************
procedure Tfrm_bonusratio1.btn_firstClick(Sender: TObject);
begin
        if not qbr1.Bof then qbr1.First ;
end;

procedure TFrm_bonusratio1.btn_lastClick(Sender: TObject);
begin
        if not qbr1.eof then qbr1.Last;

end;
 procedure TFrm_bonusratio1.btn_prevClick(Sender: TObject);
begin
        if not qbr1.Bof then qbr1.Prior ;


end;

procedure TFrm_bonusratio1.btn_nextClick(Sender: TObject);
begin
        if not qbr1.Eof then qbr1.Next ;

end;
procedure TFrm_bonusratio1.btn_addnewClick(Sender: TObject);
var
  Present: TDateTime;
begin
        UnlockEdit;
        qbr1.append;

        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;
//给下面审核栏默认值:
//日期:
    Present:=date;
    qbr1.fieldbyname('录入日期').AsString:=datetimetostr(present);
//人名:
  with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select * from pub_z_bonusratio1');
    prepare;
    open;
    last;
   qbr1.fieldbyname('月').AsString:=fieldbyname('月').AsString;
    qbr1.fieldbyname('年').AsString:=fieldbyname('年').AsString;
    qbr1.fieldbyname('奖励').AsString:=fieldbyname('奖励').AsString;
    qbr1.fieldbyname('应扣').AsString:=fieldbyname('应扣').AsString;
    qbr1.fieldbyname('主管').AsString:=fieldbyname('主管').AsString;
    qbr1.fieldbyname('审核').AsString:=fieldbyname('审核').AsString;
    qbr1.fieldbyname('录入').AsString:=fieldbyname('录入').AsString;
  end;
end;

procedure TFrm_bonusratio1.btn_saveClick(Sender: TObject);
begin
      with data.zxjxdata do begin
      if not DatabaseJxw.intransaction then DatabaseJxw.starttransaction;
      try
      qbr1.ApplyUpdates;
      DatabaseJxw.commit;
 //      qbr1.Prior ;
 qbr1.CommitUpdates ;
        //使编辑框和按钮有反应:
        LockEdit;
        EnableBtn ;
        btn_save.Enabled :=false;
        btn_cancel.Enabled :=false;
      except
        DatabaseJxw.Rollback;
        raise;
      end;

    end;
{    qbr1.Close ;
    qbr1.Open;
 }
end;



procedure TFrm_bonusratio1.btn_editClick(Sender: TObject);
begin
        qbr1.Edit ;
        //让文本框可以编辑
        UnlockEdit;
        //使一些按钮失效
        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;
end;


procedure TFrm_bonusratio1.btn_cancelClick(Sender: TObject);
begin
        qbr1.Cancel ;
        lockedit;
        enablebtn;
        btn_cancel.Enabled :=false;
        btn_save.Enabled :=false;

end;


procedure TFrm_bonusratio1.btn_deleteClick(Sender: TObject);
begin
     qbr1.Delete ;
     qbr1.ApplyUpdates ;
     lockedit;

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

end;
//***************以上是按纽操作。*********************
//***************打开数据集********************
procedure Tfrm_bonusratio1.FormCreate(Sender: TObject);
begin
    lockedit;
    enablebtn;

  //通过quse读出工号列表
  with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 姓名 from pub_z_stuff where 办事处名称=''总部''');
    prepare;
    open;
    if findfirst then begin
    while not eof do begin
      DBComboBox4.Items.Add(fieldbyname('姓名').AsString);
      next;
    end;
    end;
  end;



    with qbr1 do begin
    open;
    first;
    end;

end;

procedure TFrm_bonusratio1.btn_brsClick(Sender: TObject);
begin
    qbr1.Filtered :=false;
    DBGrid1.DataSource :=dsbr1;
end;
procedure TFrm_bonusratio1.btn_qryClick(Sender: TObject);
var
  qitem,q1,q3,q4:string;
begin


  q1 :=cbxm.Text;
  q3 :=cbgh.Text;
  q4 :=cbgw.Text;

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

    if not(cbxm.Text='') then
      begin
      q1:=cbxm.Text;
      q1:=' 姓名='''+q1+''' ';
      end
    else
      q1:='';
    if not(cbgh.Text='') then
      begin
      q3:=cbgh.Text;
      q3:=' 工号='''+q3+''' ';
      end
    else
      q3:='';
    if not(cbgw.Text='') then
      begin
      q4:=cbgw.Text;
      q4:=' 岗位='''+q4+''' ';
      end
    else
      q4:='';

     //将条件累加成子句
     if q1<>'' then qitem:=q1 else qitem:='';

     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 qbr1 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_bonusratio1.btn_clrClick(Sender: TObject);
begin
      cbxm.Text :='';
      cbgh.Text :='';
      cbgw.Text :='';
end;




procedure TFrm_bonusratio1.DBComboBox4Exit(Sender: TObject);
begin
        //通过姓名 给出工号,岗位。
    with quse do begin
      if active then close;
      sql.Clear;
      sql.Add('select * from pub_z_stuff where 姓名=:xm');
      parambyname('xm').AsString:=qbr1.fieldbyname('姓名').AsString ;
      open;
      DBComboBox5.Items.Clear ;
      while not eof do begin
      DBComboBox5.Items.Add(FieldByName('工号').AsString);
      next;
      end;
      first;
      qbr1.FieldByName('岗位').AsString:=FieldByName('岗位').AsString;
      qbr1.FieldByName('工号').AsString:=FieldByName('工号').AsString;
   end;
end;





procedure Tfrm_bonusratio1.TabSheet2Enter(Sender: TObject);
begin
   with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 职位 from std_office_station');
    prepare;
    open;
      cbgw.Items.Clear ;
      while not Eof do begin
      cbgw.Items.Add(FieldByName('职位').AsString);
      Next;
      end;
    end;

   with quse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 工号,姓名 from pub_z_stuff');
    prepare;
    open;
      cbxm.Items.Clear ;
      cbgh.Items.Clear ;
      while not Eof do begin
      cbxm.Items.Add(FieldByName('姓名').AsString);
      cbgh.Items.Add(FieldByName('工号').AsString);
      Next;
      end;
    end;

end;

procedure Tfrm_bonusratio1.btn_prtClick(Sender: TObject);
begin
     frp_bonusratio1:=Tfrp_bonusratio1.Create(application);
     frp_bonusratio1.QuickRep1.Preview;
     frp_bonusratio1.free;

end;

procedure Tfrm_bonusratio1.DBComboBox5Exit(Sender: TObject);
begin
{        //通过 工号给出姓名,岗位。
    with quse do begin
      if active then close;
      sql.Clear;
      sql.Add('select * from pub_z_stuff where 工号=:xm');
      parambyname('xm').AsString:=qbr1.fieldbyname('工号').AsString ;
      open;
      DBComboBox4.Items.Clear ;
      while not eof do begin
      DBComboBox4.Items.Add(FieldByName('姓名').AsString);
      next;
      end;
      first;
      qbr1.FieldByName('岗位').AsString:=FieldByName('岗位').AsString;
      qbr1.FieldByName('姓名').AsString:=FieldByName('姓名').AsString;
    end;}
end;

procedure Tfrm_bonusratio1.FormDestroy(Sender: TObject);
begin
   frm_bonusratio1:=nil;
end;

end.

⌨️ 快捷键说明

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