📄 unit_rubb_autocard.pas
字号:
sql.Add('select * from 人员登陆表 where 密码 = :p ');
parambyname('p').asstring:=edit_p.text;
open;
end; //with
fields[16].asstring:=Q1.fieldbyname('姓名').asstring; //领料人
sStaff:=Q1.fieldbyname('姓名').asstring; //领料人
fields[17].asfloat:=strtofloat(formatfloat('0.000',temWT)); //出库数量
fields[21].asinteger:=vkuhao; //kuhao
// fields[19].asboolean:=false; //领料标识
post;
//要改
//领料日期前的库存
with Query2 do
begin
close;
sql.Clear;
sql.Add('select sum(入库数量),sum(出库数量) from 原材料台帐 ');
sql.Add('where 日期 <= :v_date and 材料名称= :v_mater and 领料单号= :v_OutCardNum and 单价 = :v_per ');
parambyname('v_date').asdatetime:=DateTimePicker1.date;
parambyname('v_mater').asstring:=temName;
parambyname('v_OutCardNum').asstring:=temDrawCard;
parambyname('v_Per').asfloat:=strtofloat(formatfloat('0.00',temPer)); //单价
//parambyname('v_IfOut').asboolean:=true;
open;
t_SelfStock:=fields[0].asfloat-fields[1].asfloat;
end; //with
with Query2 do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 库存 = :v_SelfStock ');
sql.Add('where 标识号 = :v_id');
parambyname('v_SelfStock').asfloat:=strtofloat(formatfloat('0.000',t_SelfStock));
parambyname('v_id').asinteger:=TabIO.fields[0].asinteger;
execsql;
end; //with
// showmessage(Form_Mater_OutFromInCard.Qry_OutFromInCard.fieldbyname('领料单号').asstring);
//修改其后的库存
with Query2 do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 库存 =(库存*1000 - :v_Rewt)/1000 , 最后领料标识 = :v ');
sql.Add('where 日期>:riqi and 出入标识= :v_IfOut and 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per');// and 出入标识 = :v_IfOut ');
parambyname('v_Rewt').asfloat:=strtofloat(formatfloat('0.000',temWT*1000));//strtofloat(DBEdit_OutWt.text)*1000;
parambyname('v_mater').asstring:=temName;
parambyname('v_OutCardNum').asstring:=temDrawCard;
parambyname('v_Per').asfloat:=strtofloat(formatfloat('0.00',temPer)); //单价
parambyname('v_IfOut').asboolean:=true;
parambyname('v').asboolean:=false;
parambyname('riqi').asdatetime:=DateTimePicker1.date;
execsql;
end;
//填写最后领料标识(True) 找到库存最小的
with Query2 do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag');
sql.Add('where 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per ');
parambyname('v_LastOutCardFlag').asboolean:=false;
parambyname('v_mater').asstring:=temName;
parambyname('v_OutCardNum').asstring:=temDrawCard;
parambyname('v_Per').asfloat:=strtofloat(formatfloat('0.00',temPer));//单价
execsql;
close;
sql.Clear;
sql.Add('select * from 原材料台帐 ');
sql.Add('where 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per ');
sql.Add('order by 库存 ');
parambyname('v_mater').asstring:=temName;//材料名称
parambyname('v_OutCardNum').asstring:=temDrawCard;//领料单号
parambyname('v_Per').asfloat:=strtofloat(formatfloat('0.00',temPer));//单价
open;
n_id:=fieldbyname('标识号').asinteger;
close;
sql.Clear;
sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag ');
sql.Add('where 标识号 = :v_id');
parambyname('v_LastOutCardFlag').asboolean:=true;
parambyname('v_id').asinteger:=n_id;
execsql;
// fields[20].asfloat:=strtofloat(formatfloat('0.000',(temStock - temWT)));//temStock - temWT; //库存
// showmessage(floattostr(temStock)+' '+floattostr(temWT));
// post;
end; //with
end;
//第一次填写用料单
with TabMater do
begin
open;
append;
fields[1].asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger; //主表标识号
fields[2].asstring:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('配方编号').asstring; //配方编号
fields[3].asstring:='HX'+temDrawCard; //货源号
fields[4].asstring:=temName; //材料名称
fields[5].asstring:=temDrawCard; //领料单号
fields[6].asfloat:=strtofloat(formatfloat('0.000',temWT));//temWT; //领料数量
fields[7].asfloat:=temPer; //单价
fields[8].asfloat:=strtofloat(formatfloat('0.00',temWT * temPer));//temWT * temPer; 金额
fieldbyname('riqi').asdatetime:=DateTimePicker1.date;
post;
end; //with
break; //跳出
//还要填写用料单
end
else
begin //如果某条记录的库存小于领料重量
temWT:=temWT - Qry_exe.fieldbyname('剩余库存').asfloat;//差值取另一条记录
//第一步
with Q1 do
begin //修改另一条入库记录
close;
sql.Clear;
sql.Add('update 原材料台帐 set 剩余库存 = :s , 领料标识 = :bT where 标识号 = :id ');
parambyname('s').asfloat:= 0;
parambyname('id').asinteger:=iID;
parambyname('bT').asboolean:=true;
execsql;
end; //with
//第二步
with Q1 do
begin //找出该材料最后一条记录号
close;
sql.Clear;
sql.Add('select * from 原材料台帐 ');
sql.Add('where 材料名称 = :sName and 领料单号 = :card and 最后领料标识 = :bT ');
parambyname('sName').asstring:=temName;
parambyname('card').asstring:=temDrawCard;
parambyname('bT').asboolean:=true;
open;
iID:=fieldbyname('标识号').asinteger;
end; //with
with Q1 do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 最后领料标识 = :bF ');
sql.Add('where 标识号 = :id ');
parambyname('id').asinteger:=iID;
parambyname('bF').asboolean:=false;
execsql;
end; //with
//第三步
//自动填写 标识号 开始写同材料的另一条出库记录
with Q1 do
begin
close;
sql.Clear;
sql.Add('select max(标识号) from 原材料台帐 ');
open;
end; //with
with TabIO do
begin
open;
append;
fields[0].asinteger:=Q1.fields[0].asinteger + 1;
fields[1].asdatetime:=DateTimePicker1.date;
fields[2].asboolean:=true;
fields[3].asstring:=temName;
fields[4].asstring:='';
// fields[5].asstring:='生产厂家';
// fields[6].asstring:='进货地点';
// fields[7].asfloat:=100; //入库数量
fields[8].asfloat:=temPer; //单价
// fields[9].asstring:='采购员';
// fields[10].asstring:='检验员';
// fields[11].asfloat:=20.5; //剩余库存
fields[12].asboolean:=true; //最后领料标识
fields[13].asstring:=temDrawCard; //领料单号
if not bDrawFlag then
fields[14].asstring:='HX'+temDrawCard; //出库货源号
fields[15].asstring:=Edit_dep.text; //使用部门
with Q1 do
begin
close;
sql.Clear;
sql.Add('select * from 人员登陆表 where 密码 = :p ');
parambyname('p').asstring:=edit_p.text;
open;
end; //with
fields[16].asstring:=Q1.fieldbyname('姓名').asstring; //领料人
fields[17].asfloat:=strtofloat(formatfloat('0.000',temStock));//temStock; //出库数量
// showmessage(floattostr(temWT));
fields[21].asinteger:= vkuhao;//写库号
// fields[19].asboolean:=false; //领料标识
fields[20].asfloat:=0; //库存
post;
end; //with 此条记录的库存为零
//第二种情况之 填写用料单
with TabMater do
begin
open;
append;
fieldbyname('riqi').asdatetime:=DateTimePicker1.date;
fields[1].asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger; //主表标识号
fields[2].asstring:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('配方编号').asstring; //配方编号
fields[3].asstring:='HX'+temDrawCard; //货源号
fields[4].asstring:=temName; //材料名称
fields[5].asstring:=temDrawCard; //领料单号
fields[6].asfloat:=strtofloat(formatfloat('0.000',temStock));//temStock; //领料数量
fields[7].asfloat:=temPer; //单价
fields[8].asfloat:=strtofloat(formatfloat('0.00',temWT * temPer));//temWT * temPer; //金额
post;
end; //with
end; // if 1
Qry_exe.next;
end;//while
end; //if
Qry_TakeCard.next;
end; //while
messagedlg('领料完成!'+#13+#13+'请按 "返回" 键! ', mtinformation, [mbok],0);
//自动刷新工艺卡
Form_Rubb_QryProcCard.zdyQueryScroll;
//填写工艺卡 所缺的栏目
fWeight:=0;
fPrice:=0;
Form_Rubb_Main.Qry_MaterCard.first;
//showmessage(inttostr(Form_Rubb_Main.Qry_MaterCard.recordcount));
while not Form_Rubb_Main.Qry_MaterCard.eof do
begin
fWeight:=fWeight + Form_Rubb_Main.Qry_MaterCard.fieldbyname('用料数量').asfloat;
fPrice:=fPrice + Form_Rubb_Main.Qry_MaterCard.fieldbyname('金额').asfloat;
Form_Rubb_Main.Qry_MaterCard.next;
end; //while
//showmessage(floattostr(fPrice)+' '+floattostr(fWeight));
fPrice:=strtofloat(formatfloat('0.00',fPrice/fWeight));
with Q1 do
begin
close;
sql.Clear;
sql.Add('update 炼胶工艺卡 set 配料用料量 = :Weight, 单价 = :Price, 车数 = :Che, ');
sql.Add('配料日期 = :RubbDate, 生产批号 = :Bat, 配料人 = :Staff, 制成品名称 = :RubbName ');
sql.Add('where 标识号 = :id ');
parambyname('Weight').asfloat :=fWeight;
parambyname('Price').asfloat :=fPrice;
parambyname('RubbDate').asdatetime :=strtodate(datetostr(DateTimePicker1.date));
parambyname('RubbName').asstring:=edit_Rubb.text;
parambyname('Che').asfloat:=strtofloat(eChe.text);
with query1 do
begin
close;
sql.clear;
sql.add('select * from 炼胶工艺卡 where 混炼日期 = :RubbDate ');
parambyname('RubbDate').asdatetime:=strtodate(Form_Rubb_Main.DBEdit10.TEXT);
open;
sProcBat:='sx'+formatdatetime('yymmdd',DateTimePicker1.date);
if recordcount = 0 then
sProcBat:='sx'+formatdatetime('yymmdd',DateTimePicker1.date)+'01'
else if (recordcount >0) and (recordcount <10) then
sProcBat:='sx'+formatdatetime('yymmdd',strtodate(Form_Rubb_Main.DBEdit10.TEXT))+'0'+inttostr(recordcount)
else
sProcBat:='sx'+formatdatetime('yymmdd',strtodate(Form_Rubb_Main.DBEdit10.TEXT))+inttostr(recordcount);
end; //with
// showmessage('生产批号' +' '+sProcBat);
parambyname('Bat').asstring :=sProcBat;
parambyname('id').asinteger :=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
parambyname('Staff').asstring :=sStaff;
execsql;
end;//with
Form_Rubb_Main.dbePrice.text:=floattostr(fPrice);
Form_Rubb_Main.dbeMaterWt.text:=floattostr(fWeight);
// 刷新工艺卡
with Form_Rubb_QryProcCard.Qry_QryProcCard do
begin
bmRubbQry:=getbookmark;
close;
open;
gotobookmark(bmRubbQry);
end; //with
end;
procedure TForm_Rubb_AutoCard.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Qry_TakeCard.Active:=false;
end;
procedure TForm_Rubb_AutoCard.FormCreate(Sender: TObject);
begin
DateTimePicker1.date:=date;
end;
procedure TForm_Rubb_AutoCard.FormShow(Sender: TObject);
begin
eChe.text:='';
Edit_Per.text:='';
eTotal.text:='';
end;
procedure TForm_Rubb_AutoCard.BitBtn2Click(Sender: TObject);
begin
Form_Rubb_piliang.QRSumW.caption := eTotal.text;
Form_Rubb_piliang.Qrdata.caption := datetostr(date);
Form_Rubb_piliang.QuickRep1.Preview;
end;
procedure TForm_Rubb_AutoCard.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end;
end;
procedure TForm_Rubb_AutoCard.Edit_PerEnter(Sender: TObject);
begin
TEdit(Sender).color:=claqua;//(Sender as TEdit).color := claqua;
end;
procedure TForm_Rubb_AutoCard.Edit_PerExit(Sender: TObject);
begin
TEdit(Sender).color:=clwindow;//(Sender as TEdit).color := clwindow;
end;
procedure TForm_Rubb_AutoCard.Button1Click(Sender: TObject);
begin
Qry_TakeCard.Active:=False;
Query1.Active:=False;
TabIO.Active:=False;
TabMater.Active:=False;
Q1.Active:=False;
Qry_exe.Active:=False;
Close;
end;
procedure TForm_Rubb_AutoCard.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
// exit;
//if Key=190 then
exit;
except
end;
end;
procedure TForm_Rubb_AutoCard.Edit_depEnter(Sender: TObject);
begin
TEdit(Sender).color:=claqua;//(Sender as TEdit).color := claqua;
frmCommQueryID.top:=200;
frmCommQueryID.left:=220;
//Table3.Close;
frmCommQueryID.PageControl1.ActivePageIndex:=3;
frmCommQueryID.ActiveControl:=frmCommQueryID.DBGrid1;
if frmCommQueryID.showmodal = mrok then
begin
// Edit_Dep.setfocus;
Edit_Dep.text:=frmCommQueryID.query2.fieldbyname('workshopname').asstring;
end; //if
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -