📄 gzgn.pas
字号:
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 + -