📄 borrow.pas
字号:
ExtBtn.Cancel:=true;
BitBtn1.cancel:=false;
end;
procedure TForm_Borrow.BitBtn1Click(Sender: TObject);
begin
panel5.Visible:=false;
panel5.Enabled:=false;
ExtBtn.Cancel:=true;
BitBtn1.cancel:=false;
end;
procedure TForm_Borrow.Button1Click(Sender: TObject);
var i:integer;tmpstr:string;
begin
tmpstr:=trim(edit4.Text);
if tmpstr='' then exit;
ClearSpaceBar(tmpstr);
edit4.Text:=tmpstr;
for i:=0 to ListBox2.Items.Count-1 do
if ListBox2.Items[i]=tmpstr then
begin
MsgErr(handle,'事由['+trim(tmpstr)+']已存在,不能重复!');
exit;
end;
ListBox2.Items.Add(tmpstr);
ListBox2.Items.SaveToFile(apppath+'\borrow.txt');
ListBox1.Items.LoadFromFile(apppath+'\borrow.txt')
end;
procedure TForm_Borrow.FormShow(Sender: TObject);
begin
ListBox1.Items.LoadFromFile(apppath+'\borrow.txt');
ListBox2.Items.LoadFromFile(apppath+'\borrow.txt');
//添加在职人员信息
if not ADOQemployee.Active then ADOQemployee.Open;
if ADOQemployee.recordcount =0 then
begin
MsgErr(handle,'无人员信息!');
exit;
end;
DBComboBox_Empid.Clear;
ADOQemployee.First;
while not ADOQemployee.eof do
begin
DBComboBox_Empid.Items.add(inttostr(ADOQemployee.FieldValues['empid']));
ADOQemployee.next;
end;
//添加所有人员信息,包括非在职人员
with adoqemployee do
begin
close; sql.Clear;
sql.Add('select empid, empname, sex, state from employee');
try
execsql; open;
except
MsgErr(handle,'得到人员信息失败!'); exit;
end;
end;
//添加操作员信息
if not ADOQoper.Active then ADOQoper.Open;
if ADOQoper.recordcount =0 then
begin
MsgErr(handle,'无操作员信息!');
exit;
end;
adoqoper.First;
ComBox_opeid.Clear;
ComBox_opeid.Items.Add(' ');
while not ADOQoper.eof do
begin
ComBox_opeid.Items.add(ADOQoper.FieldValues['opername']);
ADOQoper.next;
end;
end;
procedure TForm_Borrow.Button2Click(Sender: TObject);
begin
if ListBox2.Items.Count >0 then
begin
ListBox2.Items.Delete(ListBox2.ItemIndex);
ListBox2.Items.SaveToFile(apppath+'\borrow.txt');
end;
end;
procedure TForm_Borrow.ListBox1DblClick(Sender: TObject);
begin
if listbox1.Items.Count=0 then exit;
edtmemo.text:=listbox1.Items[listbox1.ItemIndex];
end;
procedure TForm_Borrow.DS_BorrowStateChange(Sender: TObject);
begin
if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
Begin
AddBtn.Enabled :=False;
EdtBtn.Enabled :=False;
DelBtn.Enabled :=False;
CancelBtn.Enabled :=True;
Locatebtn.Enabled:=false;
SaveBtn.Enabled:=true;
ExtBtn.Enabled :=False;
end;
if (Sender as TDataSource).DataSet.State in [dsBrowse] then
Begin
AddBtn.Enabled :=True;
EdtBtn.Enabled :=True;
DelBtn.Enabled :=True;
CancelBtn.Enabled :=False;
Locatebtn.Enabled:=true;
ExtBtn.Enabled :=True;
end;
end;
procedure TForm_Borrow.ADOQ_BorrowAfterInsert(DataSet: TDataSet);
var tmp_id:integer;
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgErr(handle,'数据库操作失败,请重试!');
abort; exit;
end;
adoq_borrow.FieldValues['tmp_id']:=tmp_id;
adoq_borrow.FieldValues['empid']:=null;
adoq_borrow.FieldValues['money']:=0.00;
adoq_borrow.FieldValues['event']:='';
adoq_borrow.FieldValues['flag']:='F';
end;
procedure TForm_Borrow.ADOQ_BorrowBeforePost(DataSet: TDataSet);
var tmpdatetime:Tdatetime;
begin
if trim(edtempname.Text)='' then
begin
msgok(handle,'请选择待借支的员工信息!');
dbcombobox_empid.SetFocus;
abort;
exit;
end;
if adoq_borrow.FieldValues['money']=0.00 then
begin
MsgErr(handle,'金额不能为零!');
edtmoney.SetFocus;
abort;
exit;
end;
try
if strtofloat(trim(edtmoney.Text))<=0 then
begin
msgok(handle, '请输入正确的借支金额!');
edtmoney.SetFocus;
abort;
exit;
end;
except
msgerr(handle,'请输入正确的金额格式!');
edtmoney.SetFocus;
abort;
exit;
end;
if trim(edtmemo.Text)='' then
begin
msgok(handle, '请输入员工借支金额的事由!');
edtmemo.SetFocus;
abort;
exit;
end;
GetHostDateTime(datamod.ADOCon,tmpdatetime);
adoq_borrow.FieldValues['rec_date']:=tmpdatetime;
end;
procedure TForm_Borrow.DBComboBox_EmpidKeyPress(Sender: TObject;
var Key: Char);
var earning_1:real;
begin
if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
if key <> chr(13) then exit;
edtempname.Clear; edtmoney.text:='0.00';
edtmemo.clear; inedt.Clear; outedt.Clear; baledt.Clear;
dbcombobox_empid.Text:=trim(dbcombobox_empid.Text);
if not adoqemployee.Locate('empid',dbcombobox_empid.Text,[loCaseInsensitive]) then
begin
MsgErr(handle,'员工编码['+dbcombobox_empid.Text+']不存在!');
dbcombobox_empid.SetFocus;
exit;
end;
if adoqemployee.FieldValues['state']=0 then
begin
MsgErr(handle,'该员工已离职,无法执行借支!');
exit;
end;
edtempname.text:=adoqemployee.FieldValues['empname'];
edtoperator.text:=curAdmin.user_name;
edtsex.Text:=adoqemployee.FieldValues['sex'];
//初始化人员的总收入、总支出、结余
inedt.Text:='0.00';
outedt.Text:='0.00';
baledt.Text:='0.00';
//计算当前人员收支情况(主收入+附加收入)
earning_1:=calbal();
if earning_1<=0 then
begin
Msgerr(handle,'当前人员账面上没有结余,不能借支!');
edtempname.clear;
//初始化人员的总收入、总支出、结余
{ inedt.Text:='0.00';
outedt.Text:='0.00';
baledt.Text:='0.00';
edtmoney.Text:='0.00'; }
DBComboBox_Empid.SetFocus; exit;
end;
edtmoney.SetFocus;
end;
procedure TForm_Borrow.SaveBtnClick(Sender: TObject);
var tmpstate:integer;
info:string;
begin
if trim(edtempname.Text)='' then
begin
MsgErr(handle,'支款人信息不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
DBComboBox_Empid.SetFocus;
exit;
end;
if not adoq_borrow.Active then
begin
adoq_borrow.Open;
adoq_borrow.Append;
if not CancelBtn.Enabled then CancelBtn.Enabled:=true;
end;
if adoq_borrow.State in [dsBrowse] then
begin
adoq_borrow.Append;
if not CancelBtn.Enabled then CancelBtn.Enabled:=true;
end;
with adoq_borrow do
begin
if adoq_borrow.State in [dsinsert,dsedit] then
begin
FieldValues['empid']:=trim(DBComboBox_Empid.Text);
if not ToMoney(edtmoney.Text,info) then
begin
MsgErr(handle,'金额格式不对[0.00]!');
edtmoney.SetFocus; abort; exit;
end;
if strtofloat(edtmoney.Text)<=0 then
begin
msgok(handle,'请输入正确的支出金额!');
edtmoney.SetFocus;
exit;
end;
try
FieldValues['money']:=strtofloat(edtmoney.Text);
except
MsgErr(handle,'金额格式不对!');
edtmoney.SetFocus;
exit;
end;
FieldValues['event']:=trim(edtmemo.Text);
end;
end;
if adoq_borrow.State in [dsedit] then
begin
if calbal()+edit_money<adoq_borrow.FieldValues['money'] then
begin
msgerr(handle,'当前员工的借支金额超过本人的收入结余,无法进行数据入库!');
exit;
end;
end;
if adoq_borrow.State in [dsinsert] then
if calbal()<adoq_borrow.FieldValues['money'] then
begin
msgerr(handle,'当前员工的借支金额超过本人的收入结余,无法进行数据入库!');
exit;
end;
if adoq_borrow.State in [dsinsert] then
tmpstate:=1
else
tmpstate:=0;
try
adoq_borrow.Post;
if tmpstate=1 then
MsgOK(handle,'员工 ['+trim(edtempname.Text)+'] 支出记录增加成功!')
else
MsgOK(handle,'员工 ['+trim(edtempname.Text)+'] 支出记录修改成功!');
DBComboBox_Empid.Enabled:=true;
except
MsgErr(handle,'员工支出数据操作失败!');
exit;
end;
end;
procedure TForm_Borrow.DBComboBox_EmpidChange(Sender: TObject);
begin
edtempname.clear;
//初始化人员的总收入、总支出、结余
inedt.Text:='0.00';
outedt.Text:='0.00';
baledt.Text:='0.00';
edtmoney.Text:='0.00';
end;
procedure TForm_Borrow.edtmoneyKeyPress(Sender: TObject; var Key: Char);
begin
if not ( key in ['0'..'9',chr(8),chr(13),'.']) then abort;
end;
procedure TForm_Borrow.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
if (adoq_borrow.State in [dsinsert,dsedit]) then
begin
AllowChange:=false;
Msgok(handle,'数据库正处在操作状态,请先按 [取消] 按钮!');
end;
end;
procedure TForm_Borrow.PrtBtnClick(Sender: TObject);
begin
if not adoq_borrow.Active then exit;
if ADOQ_Borrow.RecordCount<1 then exit;
InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
SelectPage(RvProject1,'Report1',1);
//传递参数
AddParameter(RvProject1,'UserName',curAdmin.user_name);
AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
//显示页
PageShow(RvProject1);
end;
procedure TForm_Borrow.ADOQ_BorrowBeforeEdit(DataSet: TDataSet);
begin
edit_money:=DataSet.FieldValues['money'];
end;
procedure TForm_Borrow.BitBtn3Click(Sender: TObject);
begin
if not adoq_borrow.Active then exit;
with ADOQoper do begin close; open; end;
with ADOQemployee do begin close; open; end;
with ADOQ_Borrow do
begin
try
close;sql.Clear;
sql.add('select * from brrow ');
sql.add('order by empid,rec_date');
execsql; open;
except
MsgErr(handle,'数据库刷新失败(ALL_Borrow)!');
exit;
end;
end;
end;
procedure TForm_Borrow.Edit_EmpidKeyPress(Sender: TObject; var Key: Char);
begin
if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
end;
procedure TForm_Borrow.ADOQ_BorrowAfterPost(DataSet: TDataSet);
var
log_id:integer;
begin
with dataset do
begin
log_id:=fieldvalues['log_id'];
close; open;
end;
ADOQoper.Close; adoqoper.open;
ADOQemployee.Close; ADOQemployee.open;
dataset.Locate('log_id',log_id,[]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -