📄 outbom_log.pas
字号:
adoqtmp2.Close;
adoqtmp3.Close;
//9.如果在领料表中没有对应的订单、裁床号、扎号、规格对应的数据,侧添加,否侧在虚拟表中显示
adoquery1.First;
ADOQoutbom_log.First;
while not adoquery1.Eof do
begin
adoquery1.Edit;
for i:=1 to adoqtmp.recordcount do//工序数
begin
adoquery1.FieldValues[ADOQoutbom_log.FieldValues['temp_key']]:=ADOQoutbom_log.FieldValues['empid'];
ADOQoutbom_log.Next;
end;
adoquery1.Post;
adoquery1.Next;
end; //while not adoquery1.Eof do
RefeshMe:=true; //同步显示工序领料表与辅料表的对应关系
adoquery1.First;
//显示查找对应裁床号,扎号Form
end;
//得到字段值(real型的)
function TForm_Outbom_log.Getmoneyvalue(table,fin_field,fin_value,res_field:string):real;
begin
with ADOQ_tmpser do
begin
close; SQL.Clear;
SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
Parameters.ParamValues['fin_value']:=fin_value;
ExecSQL; Open;
result:=FieldValues[res_field];
close;
end;
end;
//得到字段值(字符型的)
function TForm_Outbom_log.GetFieldvalue(table,fin_field,fin_value,res_field,res_value:string):string;
begin
with ADOQ_tmpser do
begin
close; SQL.Clear;
SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
Parameters.ParamValues['fin_value']:=fin_value;
ExecSQL; Open;
result:=FieldValues[res_field];
close;
end;
end;
//得到字段值(boolean型的)
function TForm_Outbom_log.Getbooleanvalue(table,fin_field,fin_value,res_field:string):boolean;
begin
result:=false;
with ADOQ_tmpser do
begin
close; SQL.Clear;
SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
Parameters.ParamValues['fin_value']:=fin_value;
try
ExecSQL; Open;
except
exit;
end;
result:=FieldValues[res_field];
close;
end;
end;
procedure TForm_Outbom_log.FormShow(Sender: TObject);
begin
RefeshMe:=false;
//添加订单号
with ADOQtmp do
begin
close;sql.clear;
sql.add('select ord_id from order_msg order by order_date');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无订单信息,请先定义!');
exit;
end;
first;
while not eof do
begin
ComboBox1.Items.Add(fieldvalues['ord_id']);
next;
end;
end;
ComboBox1.ItemIndex :=ReadIniFIle(WsInteger,'LISTBOX','FL');
Add_outbom;
//显示员工信息表
with ADOQemp do
begin
close;sql.clear;
sql.add('select * from employee where state=1 and grade=''计件制''');
open;
end;
if not ADOQuery3.Active then ADOQuery3.Open;
end;
procedure TForm_Outbom_log.ReturnBtnClick(Sender: TObject);
var tmpkey:string;
begin
RefeshMe:=false;
if ADOQuery2.RecordCount = 0 then exit;
if ADOQuery2.FieldValues['empid'] = null then exit;
if ADOQuery2.FieldValues['flag'] then
begin
msgerr(handle,'该工序已验收返料,不可退料!');
abort; exit;
end;
//如果该人员已领取辅料则提示是否退料
if adoquery2.FieldValues['flflag'] then
begin
if MsgQst(handle,'员工 ['+ADOQemp.fieldvalues['empname']+'] 的辅料已领取,还要退回吗?') =IDNO then exit;
end
else
if MsgQst(handle,'确定将['+ADOQemp.fieldvalues['empname']+']的领料['+ADOQuery2.fieldvalues['seq_name']+']退回吗'+'?') =IDNO then exit;
try
tmpkey:=ADOQuery2.FieldValues['temp_key'];
ADOQuery2.Edit;
ADOQuery2.FieldValues['empid']:=NULL;
ADOQuery2.FieldValues['flflag']:=false;
ADOQuery2.FieldValues['outdate']:=null;
ADOQuery2.Post;
ADOQuery1.Edit;
ADOQuery1.FieldValues[tmpkey]:=NULL;
ADOQuery1.Post;
except
MsgErr(handle,'退料失败!');
end;
end;
procedure TForm_Outbom_log.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=Cafree;
end;
procedure TForm_Outbom_log.ComboBox1Change(Sender: TObject);
begin
ComboBox1.Text:=trim(ComboBox1.Text);
edit1.Clear; edit2.Clear; edit3.Clear;
end;
procedure TForm_Outbom_log.DBGrid2DblClick(Sender: TObject);
var
tmpkey:string;
empid:integer;
tmpdatetime:Tdatetime;
begin
if not adoquery2.Active then exit;
if adoquery2.RecordCount=0 then exit;
if ADOQuery2.FieldValues['empid']<>null then
begin
Msgok(handle,'该工序已发料,请先退料再重新发料!');
exit;
end;
if MsgQst(handle,'确定 ['+ADOQemp.FieldValues['empname']+'] 领取 ['+ADOQuery2.FieldValues['seq_name']+'] 工序吗?')=idno then exit;
RefeshMe:=false;
tmpkey:=ADOQuery2.FieldValues['temp_key'];
empid:=ADOQemp.FieldValues['empid'];
ADOQuery2.Edit;
ADOQuery2.FieldValues['empid']:=empid;
GetHostDateTime(datamod.ADOCon,tmpdatetime);
ADOQuery2.FieldValues['outdate']:=tmpdatetime;
if ADOQuery2.FieldValues['fl_flag'] then
ADOQuery2.FieldValues['flflag']:=true;
ADOQuery2.Post;
ADOQuery1.Edit;
ADOQuery1.FieldValues[tmpkey]:=empid;
ADOQuery1.Post;
end;
procedure TForm_Outbom_log.DataSourceDataChange(Sender: TObject;
Field: TField);
// var str1, str2, str3, str4:string;
begin
if not (Sender as TDataSource).DataSet.Active then
begin
ADOQuery2.Close;
exit;
end;
if (Sender as TDataSource).DataSet.RecordCount =0 then
begin
ADOQuery2.Close;
exit;
end;
if RefeshMe then
with adoquery2 do
begin
close;sql.clear;
sql.add('select * from outbom_log where ord_id=:v_ord_id and bed_id=:v_bed_id and zh_id=:v_zh_id and size_name=:v_size_name');
sql.Add('order by bed_id,zh_id,temp_key');
{ str1:=adoquery1.FieldValues['ord_id'];
str2:=inttostr(adoquery1.FieldValues['bed_id']);
str3:=inttostr(adoquery1.FieldValues['zh_id']);
str4:=adoquery1.FieldValues['size_name']; }
parameters.ParamValues['v_ord_id']:=adoquery1.FieldValues['ord_id'];
parameters.ParamValues['v_bed_id']:=adoquery1.FieldValues['bed_id'];
parameters.ParamValues['v_zh_id']:=adoquery1.FieldValues['zh_id'];
parameters.ParamValues['v_size_name']:=adoquery1.FieldValues['size_name'];
open;
end;
end;
procedure TForm_Outbom_log.DataSource2DataChange(Sender: TObject;
Field: TField);
begin
if not adoquery2.Active then exit;
if adoquery2.RecordCount=0 then exit;
//显示对应辅料信息
with adoqmat do
begin
close;sql.Clear;
sql.Add('select mat_name, absent_bom.num*outbom_log.ccnum as num ,unit,material.mat_id from [absent_bom],material,outbom_log');
sql.add('where absent_bom.mat_id=material.mat_id and absent_bom.ord_id=:v_ord_id and ');
sql.add('absent_bom.temp_key=:v_temp_key and outbom_log.size_name=:v_sizename');
sql.add('and outbom_log.bed_id=:v_bed_id and outbom_log.zh_id=:v_zh_id');
sql.add('and outbom_log.ord_id=absent_bom.ord_id and outbom_log.temp_key=absent_bom.temp_key');
sql.add('order by material.mat_id');
parameters.ParamValues['v_ord_id']:=adoquery1.FieldValues['ord_id'];
parameters.ParamValues['v_temp_key']:=adoquery2.FieldValues['temp_key'];
parameters.ParamValues['v_sizename']:=adoquery1.FieldValues['size_name'];
parameters.ParamValues['v_bed_id']:=adoquery1.FieldValues['bed_id'];
parameters.ParamValues['v_zh_id']:=adoquery1.FieldValues['zh_id'];
open;
BitBtn2.Enabled:=recordcount>0;
end;
returnbtn.Enabled:= not adoquery2.FieldValues['qbfl_flag'];
if adoquery2.FieldValues['empid']<>null then
BitBtn1.Enabled:= not adoquery2.FieldValues['flag']
else BitBtn1.Enabled:=false;
if adoqmat.RecordCount >0 then BitBtn2.Enabled:= not adoquery2.FieldValues['flflag']
else BitBtn2.Enabled:=false;
// BitBtn2.Enabled:=not adoquery2.FieldValues['flag'];
try
if adoquery2.FieldValues['empid'] <> null then
if adoqemp.Active then
adoqemp.Locate('empid',adoquery2.FieldValues['empid'],[loCaseInsensitive]);
except
end;
end;
procedure TForm_Outbom_log.BitBtn1Click(Sender: TObject);
var tmpdatetime:Tdatetime;
fl_flag:boolean;
begin
RefeshMe:=false;
if not adoquery2.Active then exit;
if adoquery2.RecordCount =0 then exit;
if adoquery2.FieldValues['empid']=null then
begin
MsgErr(handle,'当前料未领取!');
exit;
end;
if adoquery2.FieldValues['qbfl_flag'] then
begin
Msgok(handle,'该工序已全部验收返料!');
abort; exit;
end;
//得到当前是否已有返料标记
if ADOQemp.FieldValues['empid']<>adoquery2.FieldValues['empid']
then adoqemp.Locate('empid',adoquery2.FieldValues['empid'],[]);
//将发料时的该扎的数量赋值
if ADOQmat.RecordCount<1 then fl_flag:=true
else fl_flag:=adoquery2.FieldValues['flflag'];
if not fl_flag then
begin
Msgerr(handle,'警告:该工序还有辅料未领取,不可验收!');
abort; exit;
end;
cc_number:=adoquery2.FieldValues['ccnum'];
OldNS_number:=adoquery2.FieldValues['num'];
tmpempid:=ADOQuery2.FieldValues['empid'];
tmpempname:=adoqemp.FieldValues['empname'];
seq_name:=ADOQuery2.FieldValues['seq_name'];
//显示该工序员工的收料数量信息
Form_Outbom_Query:=TForm_Outbom_Query.Create(application);
if Form_Outbom_Query.ShowModal=mrok then
begin
if NowNs_number<=0 then
begin
msgErr(handle, '请输入正确的验收数量!');
exit;
end;
adoquery2.Edit;
if OldNS_number+NowNs_number=cc_number then
adoquery2.FieldValues['qbfl_flag']:=true;
adoquery2.FieldValues['num']:=OldNS_number+NowNs_number;
adoquery2.FieldValues['flag']:=true;
GetHostDateTime(datamod.ADOCon,tmpdatetime);
adoquery2.FieldValues['retdate']:=tmpdatetime;
adoquery2.post;
end;
end;
procedure TForm_Outbom_log.BitBtn2Click(Sender: TObject);
var
emp_name, mat_id, mat_name, tmp_unit,
tmp_event, info: string;
ck_num, kc_num, price, total_money: real;
emp_id, tmp_id: integer; //edit_kc_ret_1
bool_flag, WLCK_flag:boolean;
begin
RefeshMe:=false;
if not adoquery2.Active then exit;
if not ADOQmat.Active then exit;
if adoquery2.RecordCount =0 then exit;
if ADOQmat.RecordCount=0 then exit;
if adoquery2.FieldValues['empid']=null then
begin
MsgErr(handle,'当前主料未领取,不能先领辅料!');
exit;
end;
if adoquery2.FieldValues['flflag']then
begin
MsgOK(handle,'当前工序辅料已领取');
exit;
end;
//得到当前待领辅料人员ID及姓名
emp_ID:=ADOQuery2.FieldValues['empid'];
emp_name:=GetFieldvalue('employee','empid',inttostr(emp_id),'empname','');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -