📄 earn.pas
字号:
unit Earn;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
ComCtrls, RpDefine, RpCon, RpConDS, Menus, Mask, DBCtrls, RpRave, RpBase,
RpSystem;
type
TFrmFJEarn = class(TForm)
DataSource: TDataSource;
DBGrid: TDBGrid;
AddBtn: TBitBtn;
PrtBtn: TBitBtn;
DelBtn: TBitBtn;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
ExtBtn: TBitBtn;
ADOQuery1: TADOQuery;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
Label6: TLabel;
DBEdit6: TDBEdit;
Bevel1: TBevel;
Bevel2: TBevel;
Label10: TLabel;
ADOQuery1log_id: TAutoIncField;
ADOQuery1empid: TIntegerField;
ADOQuery1rec_date: TDateTimeField;
Label1: TLabel;
Label2: TLabel;
ADOQtmp: TADOQuery;
DataSource1: TDataSource;
edtname: TEdit;
edtsex: TEdit;
DBComboBox2: TComboBox;
Rv_FJSLMX: TRvDataSetConnection;
RvSystem1: TRvSystem;
RvProject1: TRvProject;
Label19: TLabel;
Label5: TLabel;
ADOQuery1money: TBCDField;
CheckBox2: TCheckBox;
ADOQuery1tjflag: TBooleanField;
ADOQuery1tmp_id: TIntegerField;
ADOQoper: TADOQuery;
ADOQopertmp_id: TAutoIncField;
ADOQoperoperid: TStringField;
ADOQoperopername: TStringField;
ADOQoperpassword: TStringField;
ADOQoperteam_id: TIntegerField;
ADOQuery1opername: TStringField;
ADOQuery1event: TStringField;
procedure FormShow(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure AddBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DataSourceStateChange(Sender: TObject);
procedure ADOQuery1BeforePost(DataSet: TDataSet);
procedure DBComboBox2KeyPress(Sender: TObject; var Key: Char);
procedure DBComboBox2Change(Sender: TObject);
procedure ADOQuery1AfterInsert(DataSet: TDataSet);
procedure PrtBtnClick(Sender: TObject);
procedure DBEdit3KeyPress(Sender: TObject; var Key: Char);
procedure CheckBox2Click(Sender: TObject);
procedure DataSourceDataChange(Sender: TObject; Field: TField);
procedure ADOQuery1AfterEdit(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmFJEarn: TFrmFJEarn;
implementation
uses data,sharevar,sharefun, ColorSetup;
{$R *.dfm}
procedure TFrmFJEarn.FormShow(Sender: TObject);
begin
ADOQoper.Open;
//添加在职人员编码
with ADOQtmp do
begin
close;sql.clear;
sql.add('select empid from employee where state=1');
try
execsql; open;
except
MsgErr(handle,'添加人员编码失败!'); exit;
end;
if recordcount =0 then
begin
MsgErr(handle,'无人员信息!');
exit;
end;
DBComboBox2.Items.Clear;
first;
while not eof do
begin
DBComboBox2.Items.Add(fieldvalues['empid']);
next;
end;
end;
//添加所有人员信息,包括非在职人员
with ADOQtmp do
begin
close;sql.clear;
sql.add('select empid,empname,sex,state from employee');
try
execsql; open;
except
MsgErr(handle,'得到人员信息失败!'); exit;
end;
end;
DBComboBox2.SetFocus;
end;
procedure TFrmFJEarn.SaveBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
if not (ADOQuery1.State in [dsinsert, dsedit]) then exit;
ADOQuery1.Post;
end;
procedure TFrmFJEarn.CancelBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
if not (ADOQuery1.State in [dsinsert, dsedit]) then exit;
ADOQuery1.cancel;
end;
procedure TFrmFJEarn.AddBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
if ADOQuery1.State in [dsinsert, dsedit] then exit;
if edtname.Text='' then
begin
MsgOk(handle,'员工姓名不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
DBComboBox2.SetFocus; exit;
end;
if trim(DBComboBox2.Text)<>adoqtmp.FieldValues['empid'] then
adoqtmp.Locate('empid',trim(DBComboBox2.Text),[]);
if adoqtmp.FieldValues['state']=0 then
begin
MsgErr(handle,'该员工已离职,请选择其它人员!');
DBComboBox2.SetFocus; exit;
end;
ADOQuery1.Append;
DBEdit6.SetFocus;
end;
procedure TFrmFJEarn.DelBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
if ADOQuery1.State in [dsinsert, dsedit] then exit;
if ADOQuery1.RecordCount = 0 then exit;
//判断当前物品类别在物品表中是否用到
if ADOQuery1.FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
exit;
end;
if MsgQst(handle,'确定删除当前记录码?') =IDNO then exit;
try
ADOQuery1.Delete;
except
abort;
MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
end;
end;
procedure TFrmFJEarn.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=Cafree;
end;
procedure TFrmFJEarn.DataSourceStateChange(Sender: TObject);
begin
if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
Begin
AddBtn.Enabled :=False;
PrtBtn.Enabled :=False;
DelBtn.Enabled :=False;
CancelBtn.Enabled :=True;
SaveBtn.Enabled :=True;
ExtBtn.Enabled :=False;
end;
if (Sender as TDataSource).DataSet.State in [dsBrowse] then
Begin
AddBtn.Enabled :=True;
if CheckBox2.Checked then PrtBtn.Enabled :=false
else PrtBtn.Enabled :=true;
DelBtn.Enabled :=True;
CancelBtn.Enabled :=False;
SaveBtn.Enabled :=False;
ExtBtn.Enabled :=True;
end;
end;
procedure TFrmFJEarn.ADOQuery1BeforePost(DataSet: TDataSet);
var info: string;
begin
if not (Dataset.State in [dsedit,dsinsert]) then exit;
if trim(edtname.Text)='' then
begin
MsgOk(handle,'员工姓名不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
DBComboBox2.SetFocus; abort; exit;
end;
if Dataset.FieldValues['empid']<>adoqtmp.FieldValues['empid'] then
adoqtmp.Locate('empid',Dataset.FieldValues['empid'],[]);
if (Dataset.State in [dsedit]) then
begin
if adoqtmp.FieldValues['state']=0 then
begin
MsgErr(handle,'该员工已离职,致附加收入信息不能修改!');
abort; exit;
end;
if Dataset.FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
abort; exit;
end;
end;
if Dataset.FieldValues['event']='' then
begin
MsgErr(handle,'收入事由不能为空!');
DBEdit6.SetFocus; abort; exit;
end;
if not ToMoney(floattostr(Dataset.FieldValues['money']),info) then
begin
MsgErr(handle,'金额格式不对[0.00]!');
DBEdit3.SetFocus; abort; exit;
end;
if Dataset.FieldValues['money']<=0 then
begin
MsgErr(handle,'收入金额不能为0!');
DBEdit3.SetFocus; abort; exit;
end;
if MsgQst(handle,'确认保存当前员工 ['+edtname.Text+'] 数据的增加或修改吗?')=idno then abort;
end;
procedure TFrmFJEarn.DBComboBox2KeyPress(Sender: TObject; var Key: Char);
begin
if trim(DBComboBox2.Text)='' then exit;
if key<>chr(13) then exit;
if CheckBox2.Checked then CheckBox2.Checked:=false;
edtname.Clear;
if not ADOQoper.Active then ADOQoper.Open
else begin ADOQoper.Close; ADOQoper.Open; end;
if not adoqtmp.Locate('empid',trim(DBComboBox2.Text),[loCaseInsensitive]) then
begin
MsgErr(handle,'人员编码['+trim(DBComboBox2.Text)+']不存在!');
DBComboBox2.SetFocus; exit;
end
else
begin
edtname.Text:=adoqtmp.FieldValues['empname'];
edtsex.Text:=adoqtmp.FieldValues['sex'];
with adoquery1 do
begin
close;sql.clear;
sql.add('select * from earn_abs where empid=:v_empid order by rec_date desc');
parameters.ParamValues['v_empid']:=dbcombobox2.Text;
execsql; open;
PrtBtn.Enabled:=recordcount>0;
end;
end;
end;
procedure TFrmFJEarn.DBComboBox2Change(Sender: TObject);
begin
dbcombobox2.Text:=trim(dbcombobox2.Text);
edtname.Clear;
end;
procedure TFrmFJEarn.ADOQuery1AfterInsert(DataSet: TDataSet);
var tmpdatetime:Tdatetime;
tmp_id:integer;
begin
ADOQuery1.FieldValues['empid']:=dbcombobox2.Text;
ADOQuery1.FieldValues['event']:='';
GetHostDateTime(datamod.ADOCon,tmpdatetime);
ADOQuery1.FieldValues['rec_date']:=tmpdatetime;
ADOQuery1.FieldValues['money']:=0.00;
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
DataSet.FieldValues['tmp_id']:=tmp_id;
end;
procedure TFrmFJEarn.PrtBtnClick(Sender: TObject);
begin
InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
SelectPage(RvProject1,'Report1',0);
//传递参数
AddParameter(RvProject1,'UserName',curAdmin.user_name);
AddParameter(RvProject1,'empid',dbcombobox2.Text);
AddParameter(RvProject1,'empname',edtname.text);
AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
//显示页
PageShow(RvProject1);
end;
procedure TFrmFJEarn.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
end;
procedure TFrmFJEarn.CheckBox2Click(Sender: TObject);
begin
if ADOQuery1.State in [dsinsert, dsedit] then exit;
if CheckBox2.Checked then
begin
edtname.Clear; edtsex.Clear;
PrtBtn.Enabled:=false;
with adoquery1 do
begin
close;sql.clear;
sql.add('select * from earn_abs order by empid, rec_date desc');
execsql; open;
end;
end
else
with adoquery1 do
begin
close; sql.Clear;
end;
end;
procedure TFrmFJEarn.DataSourceDataChange(Sender: TObject; Field: TField);
begin
if not CheckBox2.Checked then exit;
with adoquery1 do
begin
if state in [dsinsert, dsedit] then exit;
if recordcount=0 then exit;
DBComboBox2.Text:=fieldvalues['empid'];
if adoqtmp.FieldValues['empid']<>DBComboBox2.Text then
adoqtmp.Locate('empid',trim(DBComboBox2.Text),[loCaseInsensitive]);
edtname.Text:=adoqtmp.FieldValues['empname'];
edtsex.Text:=adoqtmp.FieldValues['sex'];
end;
end;
procedure TFrmFJEarn.ADOQuery1AfterEdit(DataSet: TDataSet);
var tmp_id:integer;
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
DataSet.FieldValues['tmp_id']:=tmp_id;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -