📄 material_ck.pas
字号:
execsql;
except
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
MsgErr(handle,'物料出库处理失败--2!');
ckmat_flag:=false; exit;
end;
end;
//如果该物料为需支付个人工资的则新记录3.4.
if ADOQ_material.FieldValues['flag'] then
begin
tmp_event:=emp_name+'领料['+mat_name+']'+floattostr(ck_num)+'('+tmp_unit+')';
//3.工人支出表中新增一条记录
with ADOQ_tmp do
begin
close;sql.clear;
sql.add('INSERT INTO brrow(empid, event, money, tmp_id)');
sql.add(' VALUES (:empid,:event,:money,:tmp_id)');
parameters.ParamValues['empid']:=emp_id;
parameters.ParamValues['event']:=tmp_event;
parameters.ParamValues['money']:=ck_num*ADOQ_material.FieldValues['price'];
parameters.ParamValues['tmp_id']:=tmp_id;
try
execsql;
except
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
MsgErr(handle,'物料出库处理失败--3!');
ckmat_flag:=false; exit;
end;
end;
//4.企业收入流水账中新增一条记录
with ADOQ_tmp do
begin
close;sql.clear;
sql.add('INSERT INTO earning(event, money, tmp_id)');
sql.add(' VALUES (:event,:money,:tmp_id)');
parameters.ParamValues['event']:=tmp_event;
parameters.ParamValues['money']:=ck_num*ADOQ_material.FieldValues['price'];
parameters.ParamValues['tmp_id']:=tmp_id;
try
execsql;
except
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
MsgErr(handle,'物料出库处理失败--4!');
ckmat_flag:=false; exit;
end;
end;
end; //该物料为需支付个人工资的则新记录3.4.结束
//提交数据库
if not ckmat_flag then
begin
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
msgErr(handle,'物料 ['+mat_name+'] 发料 '+floattostr(ck_num)+' '+tmp_unit+'失败,请重试--All!');
exit;
end;
if ckmat_flag then
if datamod.ADOCon.InTransaction then
begin
try
datamod.ADOCon.CommitTrans;
except
msgErr(handle,'物料 ['+mat_name+'] 发料 '+floattostr(ck_num)+' '+tmp_unit+'失败,请重试--All!');
if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
exit;
end;
msgok(handle,'物料 ['+mat_name+'] 发料 '+floattostr(ck_num)+' '+tmp_unit+'成功!');
SpinEdit_num.Text:='0';
exit;
end;
/////////////////////////////////////////////////
//CALL DATABASE Pro_CK_Material STORE PROCEDURE
//@empid int, @mat_id varchar(10),@num float,@tmp_id int,@event varchar(30)
{ with ADOSP_CK_Material do
begin
bool_flag:=DBCheckBox_flag.Checked;
if bool_flag then tmp_event:=emp_name+'领料['+mat_name+']'+floattostr(ck_num)+'('+tmp_unit+')'
else tmp_event:='';
parameters.paramvalues['@empid']:=emp_id;
parameters.paramvalues['@mat_id']:=mat_id;
parameters.paramvalues['@num']:=ck_num;
parameters.paramvalues['@tmp_id']:=tmp_id;
parameters.paramvalues['@event']:=tmp_event;
try
execproc;
except
showmessage('存储过程执行失败(Pro_CK_Material),请重新操作!');
exit;
end;
edit_kc_ret_1:=parameters.paramvalues['@RETURN_VALUE'];
if edit_kc_ret_1=1 then
begin
msgok(handle,'物料 ['+mat_name+'] 发料 '+floattostr(ck_num)+' '+tmp_unit+'成功!');
SpinEdit_num.Text:='';
exit;
end;
if edit_kc_ret_1=0 then
begin
msgErr(handle,'物料 ['+mat_name+'] 发料 '+floattostr(ck_num)+' '+tmp_unit+'失败,请重试!');
exit;
end;
end; }
end;
procedure TForm_Material_CK.LocateBtnClick(Sender: TObject);
var
tmpdatetime:Tdatetime;
begin
if not panel5.Visible then
begin
panel5.Visible:=true;
panel5.Enabled:=true;
//得到出库日期
GetHostDateTime(datamod.ADOCon,tmpdatetime);
edate.DateTime:=tmpdatetime;
Edit_id.Clear; Edit_name.Clear;
Lookup_matype.Text:=''; DBLookup_operid.Text:='';
Edit_empid.Clear; Edit_empname.Clear;
edit1.Clear; edit2.Clear;
ExtBtn.Cancel:=false;
CancelBtn.cancel:=true;
end;
end;
procedure TForm_Material_CK.CancelBtnClick(Sender: TObject);
begin
panel5.Visible:=false;
panel5.Enabled:=false;
ExtBtn.Cancel:=true;
CancelBtn.cancel:=false;
end;
procedure TForm_Material_CK.OKBtnClick(Sender: TObject);
var
tmpnum, tmpid, tmpname,tmpmatype, strwhere,
tmp_operid, emp_id, emp_name : string;
begin
tmpid:=trim(Edit_id.text);
tmpname:=trim(Edit_name.text);
tmpmatype:=trim(Lookup_matype.Text);
tmp_operid:=trim(DBLookup_operid.Text);
emp_id:=trim(Edit_empid.Text);
emp_name:=(Edit_empname.Text);
tmpnum:=Getquery_char(ComboBox1.Text,trim(Edit1.Text),trim(ComboBox2.Text),ComboBox3.Text,trim(Edit2.Text),'num');
//得到查询的条件语句
begin
strwhere:='and (a.ckdate between :TmpStart and :TmpEnd )';
if tmpid<>'' then
strwhere:=strwhere+' and (a.mat_id = '+''''+tmpid+''''+')';
if tmpname<>'' then
strwhere:=strwhere+' and (b.mat_name like '+''''+'%'+tmpname+'%'+''''+')';
if tmpmatype<>'' then
strwhere:=strwhere+' and (e.matype_name = '+''''+tmpmatype+''''+')';
if tmp_operid<>'' then
strwhere:=strwhere+' and (d.opername = '+''''+tmp_operid+''''+')';
if emp_id<>'' then
strwhere:= strwhere+' and (a.empid = '+''''+emp_id+''''+')';
if emp_name<>'' then
strwhere := strwhere +' and (c.empname like '+''''+'%'+emp_name+'%'+''''+')';
strwhere:=strwhere + tmpnum;
end;
with ADOQ_ck_mate do
begin
try
close;
sql.Strings[2]:=strwhere;
sql.Strings[3]:='order by e.matype_name, a.mat_id,a.ckdate,a.num desc';
parameters.ParamValues['TmpStart']:=strtodatetime(formatdatetime('yyyy-mm-dd',sdate.Date)+' 00:00:00');
parameters.ParamValues['TmpEnd']:=strtodatetime(formatdatetime('yyyy-mm-dd',edate.Date)+' 23:59:59');
execsql;
open;
except
MsgErr(handle,'数据库检索失败(Material_CK_Q)!');
refreshdb;
exit;
end;
BtnExport.Enabled:=recordcount>0;
end;
panel5.Visible:=false;
panel5.Enabled:=false;
ExtBtn.Cancel:=true;
CancelBtn.cancel:=false;
end;
procedure TForm_Material_CK.BitBtn1Click(Sender: TObject);
begin
if not adoq_ck_mate.Active then exit;
refreshdb;
end;
procedure TForm_Material_CK.SerBtnClick(Sender: TObject);
begin
edit4.Text:=trim(edit4.Text);
if edit4.Text='' then begin edit4.SetFocus;exit;end;
if not adoqemp.Locate('empid',edit4.Text,[]) then
begin
MsgErr(handle,'不存在编码为 ['+edit4.Text+'] 的人员!');
edit4.SetFocus;
end;
end;
procedure TForm_Material_CK.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(13) then serbtn.Click;
end;
procedure TForm_Material_CK.Bit_Ser2Click(Sender: TObject);
begin
edit3.Text:=trim(edit3.Text);
if edit3.Text='' then begin edit3.SetFocus; exit;end;
//查找对应的物料信息
with ADOQ_material do
begin
close;
sql.Strings[2]:='and a.mat_name like '+''''+'%'+edit3.Text+'%'+'''';
open;
if recordcount<0 then
begin
MsgErr(handle,'没找到名称为 ['+edit3.Text+'] 的物料!');
edit3.SetFocus;
end;
end;
end;
procedure TForm_Material_CK.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(13) then Bit_Ser2.Click;
end;
//适时断开和连接数据表
procedure TForm_Material_CK.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePageIndex=0 then
begin
if adoq_ck_mate.Active then adoq_ck_mate.Close;
SpinEdit_num.value:=0;
end;
end;
procedure TForm_Material_CK.FormShow(Sender: TObject);
begin
with ADOQ_tmp do
begin
close; sql.Clear;
sql.Add('select matype_name from material_type');
open;
Lookup_matype.Items.Clear;
DBLookupComboBox1.Items.Clear;
Lookup_matype.Items.Add(' ');
DBLookupComboBox1.Items.Add(' ');
first;
while not eof do
begin
Lookup_matype.Items.Add(fieldvalues['matype_name']);
DBLookupComboBox1.Items.Add(fieldvalues['matype_name']);
next;
end;
close; sql.Clear;
sql.Add('select opername from operator');
open;
DBLookup_operid.Items.Clear;
DBLookup_operid.Items.Add(' ');
first;
while not eof do
begin
DBLookup_operid.Items.Add(fieldvalues['opername']);
next;
end;
end;
end;
procedure TForm_Material_CK.DBLookupComboBox1Change(Sender: TObject);
begin
DBLookupComboBox1.Text:=trim(DBLookupComboBox1.Text);
with ADOQ_material do
begin
close;
if trim(DBLookupComboBox1.Text)='' then
begin
sql.Strings[2]:='';
open; exit;
end;
sql.Strings[2]:='and b.matype_name=:matype_name';
parameters.ParamValues['matype_name']:=trim(DBLookupComboBox1.Text);
open;
end;
end;
procedure TForm_Material_CK.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #13, #8,#46]) then abort;
end;
procedure TForm_Material_CK.BtnExportClick(Sender: TObject);
begin
Form_main.WriteIntoExcel(DBGrid3,datetostr(date),'物料出库信息报表');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -