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

📄 gzgn.pas

📁 2004090611144625767.rar 资源名称:通用工资管理
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit gzgn;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls;

type
  Tgzgnb = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Label2: TLabel;
    Edit2: TEdit;
    UpDown2: TUpDown;
    Label3: TLabel;
    Label4: TLabel;
    Edit3: TEdit;
    Button2: TButton;
    DBGrid2: TDBGrid;
    DataSource1: TDataSource;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    CheckBox2: TCheckBox;
    ListBox1: TListBox;
    DataSource2: TDataSource;
    Button11: TButton;
    Button12: TButton;
    Button1: TButton;
    Label5: TLabel;
    Button13: TButton;
    Button16: TButton;
    Edit4: TEdit;
    DBGrid1: TDBGrid;
    Button9: TButton;
    Button17: TButton;
    Button10: TButton;
    Button14: TButton;
    Button8: TButton;
    Button15: TButton;
    TreeView1: TTreeView;

    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure nothing();
    procedure UpDown1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure UpDown2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure Edit3Click(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBGrid2Exit(Sender: TObject);
    procedure DBGrid2CellClick(Column: TColumn);
    procedure Button12Click(Sender: TObject);
    procedure DBGrid3Exit(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure DBGrid2Enter(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure TreeView1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit4Enter(Sender: TObject);
    procedure DBGrid2Draw(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
     procedure SaveBoolean;
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid2ColEnter(Sender: TObject);
    procedure show;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  OriginalOptions : TDBGridOptions;

  public
  i_key13,iiii:boolean;
    record_boolean:boolean;
 { Public declarations }
  end;

var
  gzgnb: Tgzgnb;

implementation

uses datamodule, ggjs, a_pass;

{$R *.DFM}



procedure Tgzgnb.Button3Click(Sender: TObject);
var
i:integer;//控制循环
str:string;
begin
i:=0;
str:='select *from ggjs where extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)=';
str:=str+edit2.text;
with datamodule1.ggjss do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;
if datamodule1.ggjss.eof then //ggjs表里面没有这个月的计算公式
 begin
ggjsb.Show;
ggjsb.Edit1.text:=edit1.text;
ggjsb.edit2.text:=edit2.text;
ggjsb.Button4.Click;
 end
 else
 begin
 button9.click;
 datamodule1.ggjss.First;
 while i<=19 do
    begin
 //根据从工资管理表里面的字段a到t的字段名来定位工资项目及计算公式表中的与之相对应的项止代码的记录,以取得工资项目及计算公式中设定的项目名称
   if datamodule1.ggjss.fieldbyname('a_gzcm').asstring<>'' then //有工资项目存在
   begin
   if  datamodule1.ggjss.fieldbyname('a_jsgs').asstring<>'' then                        //判断是否有计算公式(有的情况)
   begin
   str:=datamodule1.ggjss.fieldbyname('a_smdm').asstring+'='+datamodule1.ggjss.fieldbyname('a_jsgs').asstring;
  //取成a=b+d的这种形式
   str:='update gzgn set '+str;
   str:=str+' where extract(year from a_date)='+edit1.text;
   str:=str+' and extract(month from a_date)='+edit2.text;
   if edit4.text<>'' then
   begin
   str:=str+' and a_bm='+''''+edit4.text+'''';
   str:=str+' and a_bz='+''''+edit3.text+'''';
   end;
   datamodule1.gzgnu.sql[ukmodify].Clear;
   datamodule1.gzgnu.sql[ukmodify].text:=str;
   try
  datamodule1.gzgnu.Apply(ukmodify);
   except
   on edatabaseerror do
    nothing;
   end;
   end;
 dbgrid1.Columns[i].visible:=true;
 dbgrid1.columns[i].Title.caption:=datamodule1.ggjss.fieldbyname('a_gzcm').asstring;//更改单格标题
         end
       else //没有工资项目存在
       begin
       dbgrid1.columns[i].visible:=false;
       end;
          i:=i+1;
          datamodule1.ggjss.Next;
          end;  //上面循环用的
          end;
           button10.click;
           end;

procedure Tgzgnb.Button4Click(Sender: TObject);
begin
ggjsb.show;
ggjsb.edit1.text:=edit1.text;
ggjsb.edit2.text:=edit2.text;
ggjsb.Button4.click;
end;
procedure tgzgnb.nothing();
begin
{pwa}
end;
procedure Tgzgnb.UpDown1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
str:string;
begin
if edit4.text='' then
begin
str:='select *from gzgn where Extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)=';
str:=str+edit2.text;
end
else
begin
str:='select *from gzgn where extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)=';
str:=str+edit2.text+' and a_bm='+''''+edit4.text+'''';
str:=str+' and a_bz='+''''+edit3.text+'''';
end;
with datamodule1.gzgns do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;
if datamodule1.gzgns.eof then  //还没有工资表
   begin
   str:='select *from ggjs where extract(year from a_date)=';
   str:=str+edit1.text+' and extract(month from a_date)=';
   str:=str+edit2.text;
   with datamodule1.ggjss do
   begin
   close;
   sql.clear;
   sql.add(str);
   prepare;
   open;
   end;//with
  if datamodule1.ggjss.eof then //ggjs表里面没有这个月的计算公式
      begin
      if application.messagebox('本月还未输入公式要输入公式吗?','程序执行确认',mb_yesno+mb_defbutton2+mb_iconstop+mb_applmodal)=idyes then
  begin
  ggjsb.Show;
  ggjsb.Edit1.text:=edit1.text;
  ggjsb.edit2.text:=edit2.text;
  ggjsb.Button4.Click;
  button8.click;
  end;
       end //if datamodule1.ggjss.eof
       else
       button8.click;
  end//if datamodule1.gzgns.eof
   end;

procedure Tgzgnb.UpDown2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
str:string;
begin
if edit4.text='' then
begin
str:='select *from gzgn where Extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)=';
str:=str+edit2.text;
end
else
begin
str:='select *from gzgn where extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)=';
str:=str+edit2.text+' and a_bm='+''''+edit4.text+'''';
str:=str+' and a_bz='+''''+edit3.text+'''';
end;
with datamodule1.gzgns do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;
if datamodule1.gzgns.eof then  //还没有录入公式
  // if application.messagebox('本月还未输入公式要输入公式吗?','程序执行确认',mb_yesno+mb_defbutton2+mb_iconstop+mb_applmodal)=idyes then
   button8.click;
   end;

procedure Tgzgnb.Button8Click(Sender: TObject);
var
ggjsstr,str:string;
begin
record_boolean:=true;
{ggjsstr:='select *from ggjs where extract(year from a_date)='+edit1.text;
ggjsstr:=ggjsstr+' and extract(month from a_date)='+edit2.text;
with datamodule1.ggjss do
begin
close;
sql.clear;
sql.Add(ggjsstr);
prepare;
open;
end;//with
{if datamodule1.ggjss.eof then
begin
showmessage('请先设定好计算公式');
  ggjsb.Show;
  ggjsb.Edit1.text:=edit1.text;
  ggjsb.edit2.text:=edit2.text;
  ggjsb.Button4.Click;
end
else
begin }
datamodule1.yggb.close;
datamodule1.yggb.open;
if edit4.text='' then
str:='select *from yggb'
else
begin
str:='select *from yggb where a_bm=';
str:=str+''''+edit4.text+''''+' and a_bz=';
str:=str+''''+edit3.text+'''';
end;//else
with datamodule1.yggb do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;//else
 if datamodule1.yggb.Eof then
 showmessage('该部门还没有编制人员')
 else
 begin
  datamodule1.yggb.First;
  while not datamodule1.yggb.Eof do
   begin
     with datamodule1.gzgns do //根据部门和班组琢条增加记录(编号,姓名,部门班组
     begin
     append;
     fieldbyname('a_number').asstring:=datamodule1.yggb.fieldbyname('a_number').asstring;
     fieldbyname('a_name').asstring:=datamodule1.yggb.fieldbyname('a_name').asstring;
     fieldbyname('a_bm').asstring:=datamodule1.yggb.fieldbyname('a_bm').asstring;
     fieldbyname('a_bz').asstring:=datamodule1.yggb.fieldbyname('a_bz').asstring;
     fieldbyname('a_date').asdatetime:=strtodate(edit1.text+'-'+edit2.text+'-'+'15');
     fieldbyname('a_jsr').asstring:=datamodule1.user.fieldbyname('a_user').asstring;
     fieldbyname('a_datetime').asdatetime:=date;

  { //添加那些计算字段都为零
     while not datamodule1.ggjss.eof do
     begin
     if datamodule1.ggjss.FieldByName('a_gzcm').asstring<>'' then
     fieldbyname(datamodule1.ggjss.fieldbyname('a_smdm').asstring).asfloat:=0;
     datamodule1.ggjss.next;
     end;//while not datamodule1.ggjss }


     post;
     end; //with
    datamodule1.yggb.Next;
    end;//while not
   datamodule1.gzgns.cancel;

   button15.click;
//显示在网格里面
if edit4.text=''  then
begin
str:='select *from gzgn where extract(year from a_date)='+edit1.text;
str:=str+' and extract(month from a_date)='+edit2.text;
end
else
begin
str:='select *from gzgn where (a_bm=';
str:=str+''''+edit4.text+''''+'and a_bz=';
str:=str+''''+edit3.text+''''+')'+' and (extract(year from a_date)=';
str:=str+edit1.text+' and extract(month from a_date)='+edit2.text+')';
end;
with datamodule1.gzgns do
begin
close;
sql.clear;
sql.add(str);
prepare;
open;
end;//with
datasource1.DataSet.close;
datasource1.dataset.open;
end;//该部门没有人员编制

end;
procedure Tgzgnb.Button9Click(Sender: TObject);
var
myset:set of 'a'..'t';
anumber:set of '0'..'9';
mychar:char;
str,aa_hjs,aa_hjs1,a_hjs,hjs:string;  //接受输入的公式
a_i:integer;//取字符串长度控制循环次数
aa_ii,a_iiii,a_ii:integer;//从1开始取和循环
a_row:integer;// 判断出错在第几行
begin
 a_row:=0;
 str:='select *from ggjs where extract(year from a_date)='+edit1.text;
 str:=str+' and extract(month from a_date)='+edit2.text;
 with datamodule1.ggjss do
 begin
 close;
 sql.clear;
 sql.add(str);
 prepare;
 open;
 end;
 while not datamodule1.ggjss.Eof do
 begin
a_row:=a_row+1;
  aa_hjs:=datamodule1.ggjss.fieldbyname('a_jsgs').asstring;
  anumber:=['0'..'9'];
  aa_hjs1:=trim(aa_hjs);
  aa_ii:=length(aa_hjs1);
  a_iiii:=1;
a_hjs:=datamodule1.ggjss.fieldbyname('a_jsgs').asstring;
 if a_hjs<>'' then  // 判断公式是否空字符串
begin
myset:=['a'..'t'];
hjs:=trim(a_hjs);
a_i:=length(hjs);
if (not (hjs[a_i] in myset)) and (not (aa_hjs1[aa_ii] in anumber)) then
begin
showmessage('最后一个不能为计算符号');
a_ii:=101;
end
else
                                       begin
a_ii:=1;     //从1开始取和循环

   mychar:=hjs[a_ii];
  if mychar in myset then  //开头有写对的情况
  begin
       while a_ii<=a_i do
                              begin

⌨️ 快捷键说明

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